0

我试图从 UWP 的角度进入 MVVM。一切似乎都像在 WPF 上一样工作,但我无法运行良好的 ViewModel/View Mapping。根据 Microsodt 专家的说法:https ://channel9.msdn.com/Events/Build/2015/3-635 ,大约 20 分钟开始,ResourceDictionaries 有一些新的特殊语法。我已完成所有步骤,按预期加载字典,但直接映射不起作用:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:v="using:ARGUSnet.RaspberryPiFramework.Designer.Views"
xmlns:vm="using:ARGUSnet.RaspberryPiFramework.Designer.ViewModels"
xmlns:local="using:ARGUSnet.RaspberryPiFramework.Designer.Dictionaries"
    x:Class="ARGUSnet.RaspberryPiFramework.Designer.Dictionaries.ViewModelMappingDict">

<DataTemplate x:Key="dtTest" x:DataType="vm:TestViewModel">
    <v:TestView />
</DataTemplate>

</ResourceDictionary>

我认为这里的问题在于,我必须定义一个 Key。虽然我找到了一些解释,但我不明白为什么现在必须这样做。无论如何,如果我直接在 ViewContainer 中执行此操作,则映射有效:

<Page.Resources>
    <DataTemplate x:DataType="vm:TestViewModel">
        <v:TestView />
    </DataTemplate>
</Page.Resources>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ContentControl 
        Content="{Binding CurrentContent}" />
</Grid>

问题是,发现所有示例都可以直接工作,没有明确的映射字典,或者与 mvvmlight 之类的 Freamworks 一起工作。由于这更多是出于学习目的,因此我宁愿在不将绑定机制黑盒化到框架中的情况下完成这项工作。

有没有可能,这只是 ResourceDictionary 中的一个 Bug?我还发现了这个线程,如何将视图与视图模型或 ViewModel 的多个 DataTemplates 关联?,但据我了解,问题是关于运行时映射,而我可以直接绑定。

4

0 回答 0