4

我一直在 WPF 中做一个原型而不使用 MVVM。现在它的大小已经到了我正在重构它以使用 MVVM 的程度。

当我开始这个项目时,我直接进入并为很多事情创建了用户控件。

我现在正在破坏视图和视图模型中的东西。但是,我最终得到了包含 UserControls 的视图;UserControls 绑定到模型中现在的对象。

那么,UserControls 的概念现在在 MVVM 中已经死了吗?我的意思是,在过去(WinForms、ASP.NET 等)你会有一个名为“控件”的项目并重用它们。MVVM 中的“视图”是典型 UserControl 的直接替代品吗?

4

3 回答 3

6

WPF 中的AUserControl只不过是ContentControl带有一些调整的默认属性值的 a。AContentControl只不过是可以应用模板来定义其外观的一段内容。

我做 MVVM 的方式跳过了中间人并将视图定义为DataTemplates。然后你只需要将你的 VM 粘贴到 WPF 的可视化树的某个地方,WPF 就会用你的DataTemplate. 例如:

<ContentControl Content="{Binding SomeViewModel}"/>

<ItemsControl ItemsSource="{Binding SomeViewModels}"/>
于 2009-06-24T08:40:35.820 回答
2

我在 MVVM 世界中看到 UserControls 的方式是作为视图。与其将您的 WPF 表单视为单个视图,不如将其视为一个或多个视图的组合。因此,UserControl 可以封装一个标准的可重用视图,该视图可以合并到多个复合视图中。非常适合可重用性,而且它们仍然是可测试的。

于 2009-06-24T07:18:21.710 回答
1

嗯......当我有用户控件时,我只是将 DataContext 从视图传递给用户控件(该用户控件所需的子信息)。但确实如此,有时很难将 ViewModel 与 Views、UserControls、...

于 2009-06-24T07:16:00.657 回答