如果我的ViewModel'为我的View创建'可绑定用户控件?

时间:2010-05-23 14:36:56

标签: mvvm

我有一个带标签控件的入口点视图。每个选项卡都将嵌入一个用户控件。每个嵌入式视图都继承自相同的基类,并且需要在入口点视图上的关键字段更新时进行更新。

我认为设计此页面的最简单方法是让入口点ViewModel创建并公开一组视图,以便入口点View可以使用选项卡控件上的DataTemplate绑定到用户控件元素。

ViewModel是否可以实例化并为其View提供UI元素?

1 个答案:

答案 0 :(得分:2)

这是一个棘手的问题,但大多数MVVM人都认为这是代码味道。

ViewModel不应该关心UI实现细节。 (Separation of Concerns
它只是超出了它的范围。

我知道,有时候很难做到这一点。 (尤其是具有不可绑定属性的控件,例如RichTextBox的Document属性。)
如果你分享了一些关于你的想法的更多细节,我可以详细介绍,但这就是我的想法:

是什么阻止您在XAML中创建这些子视图?我肯定会从ViewModels中单独定义我的所有View代码。 (这甚至有一个ViewModel。) 如果在选项卡控件的XAML中定义这些视图,则可以从选项卡控件的View的ViewModel中将您想要成为其ViewModel的对象绑定到其DataContext。

您可以在this answer中阅读我对MVVM的一般看法。