Mvvm 如果我的ViewModel';创建';我的视图的可绑定用户控件?

Mvvm 如果我的ViewModel';创建';我的视图的可绑定用户控件?,mvvm,Mvvm,我有一个带有选项卡控件的入口点视图。每个选项卡都将嵌入一个用户控件。每个嵌入式视图都继承自同一基类,并且需要在更新入口点视图上的键字段时进行更新 我认为设计此页面最简单的方法是让入口点视图模型创建并公开一组视图,这样入口点视图就可以使用选项卡控件上的DataTemplate绑定到用户控件元素 一个VIEW模型可以为它的视图实例化并提供UI元素吗? < P>这是一个困难的问题,但是大多数MVVM人认为它是代码气味。 ViewModel不应该关心UI实现细节。() 这完全超出了它的范围 我知道,有时

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

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


一个VIEW模型可以为它的视图实例化并提供UI元素吗?

< P>这是一个困难的问题,但是大多数MVVM人认为它是代码气味。 ViewModel不应该关心UI实现细节。()
这完全超出了它的范围

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

是什么阻止您在XAML中创建这些子视图?我肯定会将所有视图代码与ViewModels分开定义。(这就是拥有ViewModel的意义所在。)
如果在选项卡控件的XAML中定义这些视图,则可以从选项卡控件视图的ViewModel将要作为其ViewModel的对象绑定到其DataContext


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

谢谢您的回复。这是有道理的。最近我花了很多时间学习MVVM,仍然在试图确定View vs.ViewModel中什么是犹太教或不犹太教。您的回复帮助很大-谢谢。@j0rd4n-不客气。:)最近我一直在使用MVVM(现在也是MVC)。MVVM的要点是将UI与应用程序逻辑分离,因此ViewModels必须不知道有关视图的任何信息。MVVM也不总是正确的答案。还有其他一些模式,如MVC和MVP,在必要时是合适的,它是适合于工作的合适工具。您可以将输入屏幕视为一个网站,将其许多视图视为页面,这可能会促使您在导航页面上实现MVC+路由模式。混合模式没有什么错,只要一切都合理,你也不想强迫像MVVM这样的模式进入它不属于的情况。@Agies-我同意。然而,MVVM在大多数情况下都能很好地与WPF配合。@Venemo我同意这是我的偏好。MVVM的目的是截取视图如何与模型交互。在上面的问题中,实际上没有模型,只有一个视图和一些需要控制它的东西。对我来说,上面的问题需要一个监督或被动控制器,其中可测试性来自于控制行为,而不是影响模型的业务逻辑。通过使用IoC和接口,视图对象不会有任何硬依赖关系。