MVVM - 控件与视图
-
10-07-2019 - |
题
我在不使用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 ......
不隶属于 StackOverflow