使用MVVM模式,分配数据上下文的最佳方法是什么?

14

我在寻找设置数据上下文属性的最佳方法。我发现了三种方法:

  1. 在视图上分配数据上下文(XAML或代码后台)。

  2. 通过构造函数在ViewModel上分配数据上下文。

  3. 使用一些配置,通过一些基础结构类在运行时获取视图和ViewModel的引用并绑定数据上下文。

从松耦合、可维护性方面来看,哪种选项最好?或者有没有最佳方法?

2个回答

1

我个人比较喜欢 这种方法,因为它让我写的代码更少 :). 这种方法基本上使用了一个 IValueConverter 来查找每个 WPF 控件需要如何视觉呈现 ViewModel,并且 IValueConverter 会自动设置数据上下文。此外,它还展示了如何创建一个数据模板,让你可以要求 WPF 默认使用这个转换器,像这样:

<DataTemplate DataType="{x:Type ViewModels:ViewModelBase}">
    <ContentControl Content="{Binding Converter={StaticResource MyConverter}}"/>
</DataTemplate>

0

第四种方法是使用DataTemplate。

我认为最好的方法是选择在当前情况下最适合的那个方法。

如果我的视图模型是动态场景,我会使用DataTemplate/ContentPresenter,或者如果是视图优先,我会采取您提到的方式一,等等...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接