如何在UWP

时间:2017-02-08 20:49:40

标签: c# wpf mvvm uwp

我在任何地方都没有真正找到我的问题的答案,所以我真的希望有人在我面前解决类似的问题。

我正在开发一个UWP应用程序,因为我在WPF中搞了一年的MVVM东西(没有广泛的框架/库,只是非常基本的东西来掌握它)。我已经意识到我无法在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情况: 我开始使用从ContentControl派生的ViewModel,它作为原型工作,但是丑陋且严重破坏了MVVM“规则”(imho)。 我转向使用我在Build(2016?)会议上看到的底层静态类的DataTemplate ResourceDictionary,这使我进入了当前状态。 DataTemplate现在必须有一个x:Key,这可以防止我把一切松散耦合。当然,如果我明确地使用ContentTemplate的键,那么DataTemplate会起作用,但这是我想要避免的。

经过几周的思考和思考,并对此感到沮丧,我终于决定要求某人至少给我一个如何处理这个问题的提示。 对于这个特定的应用程序,我真的不想走“做一切”框架的道路。 我也想使用编译绑定,因此整个Content / DataContext业务也消失了。

我错过了优雅(简单)或明显的解决方案吗?我非常感谢任何有用的提示。

编辑:我知道问题非常模糊,如果我确切地知道要求什么,我可能会继续搜索互联网/试图自己解决问题。我希望你不介意。

0 个答案:

没有答案