【发布时间】:2011-05-02 04:58:51
【问题描述】:
我一直在寻找设置数据上下文属性的最佳方法。我找到了三种方法
在 View 上分配数据上下文(在 XAML 或代码后面)。
通过构造函数在 ViewModel 上分配数据上下文。
使用一些配置来获取视图和视图模型引用,并通过一些基础架构类在运行时绑定数据上下文。
就松散耦合、可维护性而言,哪个是最佳选择?或者有什么最好的方法吗?
【问题讨论】:
我一直在寻找设置数据上下文属性的最佳方法。我找到了三种方法
在 View 上分配数据上下文(在 XAML 或代码后面)。
通过构造函数在 ViewModel 上分配数据上下文。
使用一些配置来获取视图和视图模型引用,并通过一些基础架构类在运行时绑定数据上下文。
就松散耦合、可维护性而言,哪个是最佳选择?或者有什么最好的方法吗?
【问题讨论】:
我个人喜欢this approach,因为它让我不得不编写更少的代码:)。它基本上使用IValueConverter 来查找在wpf 控件需要视觉呈现ViewModel 并且IValueConverter 为您设置数据上下文时使用的视图。它还向您展示了如何创建一个允许您要求 WPF 默认使用此转换器的数据模板,如下所示:
<DataTemplate DataType="{x:Type ViewModels:ViewModelBase}">
<ContentControl Content="{Binding Converter={StaticResource MyConverter}}"/>
</DataTemplate>
【讨论】:
第 4 种方式是 DataTemplate。
我认为最好的方法是最适合您当前情况的方法。
如果我有 viewmodel 第一个动态场景,我使用 datatemplate/contentpresenter 或 view first 我采取你的方式,依此类推...
【讨论】: