我还没有真正找到我的问题的答案,所以我真的希望有人真的在我之前解决了类似的问题。
我在WPF中摆弄MVVM东西一年之后,正在开发一个UWP应用程序(没有广泛的框架/库,只是非常基本的东西来掌握它)。我已经意识到,我不能真正在UWP中重新创建我心爱的模式,因为它的规则比WPF更严格。
**我在WPF中所做的:**我所做的是几个具有INPC和属性等的VM。和视图与绑定,通常的东西。它通过神奇的DataTemplate和一个非常简单的方法耦合在一起:
public static void Show(this ViewModelBase vm)
{
CreateWindow(vm).Show();
}
private static Window CreateWindow(ViewModelBase vm)
{
return new Window
{
Icon = Resources.app_icon.ToImageSource(),
Width = 500d,
Height = 320d,
Content = vm,
Title = vm.ToString()
};
}
在我的ResourceDictionary中,我为我的ViewModel类定义了所有模板,如下所示:
<DataTemplate DataType="{x:Type local:RandomViewModel}">
<local:RandomView />
</DataTemplate>
**UWP情况:**我从一个ViewModels开始,它来自ContentControl,它作为一个原型工作,但很丑,严重违反了MVVM的“规则”(imho)。我切换到了DataTemplate ResourceDictionary,其中包含我在Build(2016?)会议,这导致了我目前的状态。DataTemplate现在必须有一个x:Key,这可以防止我将所有内容都松散耦合。当然,如果我显式地使用ContentTemplate的键,DataTemplate就可以工作,但这是我想避免的。
经过几个星期的思考和沉思,并对此感到沮丧,我终于决定请某人至少给予我一个如何处理这件事的提示。对于这个特定的应用程序,我真的不想走“什么都做”框架的道路。我还想使用编译绑定,所以整个Content/DataContext业务也消失了。
是否有一个优雅(和简单)或明显的解决方案,我错过了?我真的很感激任何有用的提示。
- 编辑:我知道这个问题很模糊,如果我知道该问什么,我可能会继续搜索互联网/试图自己弄清楚。希望你不要介意 *
1条答案
按热度按时间bfhwhh0e1#
您是否被迫使用UWP?如果没有,我真的建议使用MAUI。在那里,您可以轻松地使用MVVM方法。最棒的是。一旦您构建了MAUI应用程序,您就可以轻松地将其部署到Android,Linux,IOS和Windows。尽管MAUI的生态系统仍然很弱,但我确信这是微软技术栈上任何非Web应用程序的发展方向。而且我个人更喜欢它。 Flutter 。