我在不使用MVVM的情况下在WPF中做了原型。现在它已经达到了这么大,我正在重构它以使用MVVM。

当我开始这个项目时,我直接跳了进来为很多事情创建了UserControls。

我现在正在查看Views和ViewModel中的内容。但是,我最终得到的包含UserControls的视图; UserControls绑定到模型中现在的对象。

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

有帮助吗?

解决方案

WPF中的UserControl只是一个ContentControl,只有一些调整的默认属性值。 DataTemplate只是一段内容,可以应用模板来定义其外观。

我做MVVM的方式会跳过中间人并将视图定义为<=> s。然后你只需要将你的VM粘贴到WPF的可视树中,WPF将用你的<=>渲染它。例如:

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

<ItemsControl ItemsSource="{Binding SomeViewModels}"/>

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top