Wpf 使用自定义控件而不是用户控件创建复杂视图

Wpf 使用自定义控件而不是用户控件创建复杂视图,wpf,mvvm,Wpf,Mvvm,我没有足够的关于WPF的信息,所以请纠正我。 似乎要处理不同的视图,需要创建多个usercontrols(每个视图需要一个绑定到viewModel的usercontrol),并且通过使用MVVM模式设计器可以独立创建视图。 现在,如果设计师试图创建两个具有不同结构的主题,他必须创建两个usercontrols,因为使用usercontrols时会指定布局(如前所述)。 另一方面,customControls不指定布局,因此使用customControls似乎更合理。 所以问题是:使用自定义控件而

我没有足够的关于WPF的信息,所以请纠正我。 似乎要处理不同的视图,需要创建多个usercontrols(每个视图需要一个绑定到viewModel的usercontrol),并且通过使用MVVM模式设计器可以独立创建视图。 现在,如果设计师试图创建两个具有不同结构的主题,他必须创建两个usercontrols,因为使用usercontrols时会指定布局(如前所述)。 另一方面,customControls不指定布局,因此使用customControls似乎更合理。 所以问题是:使用自定义控件而不是usercontrols是正确的吗?如果是,viewmodels从控件继承并且视图成为viewmodels的唯一样式是否合理

除非您需要自定义控件提供的功能,否则我建议使用UserControls或DataTemplates。它们更简单。这里有一个相关的问题\答案


viewmodels从控件继承是否合理。ViewModel是一个独立的、与UI框架无关的类,它对WPF或其他任何东西都不了解。不,视图不使用
控件。否则,您需要
ControlTemplates
无处不在,这是不需要的。那么是否也可以为不同的视图更改usercontrol的布局,解决方案是什么?谢谢你,你真的需要吗?如果需要,您还可以对不同的
数据类型使用
DataTemplates
。应用程序主题是否会显著改变布局?您真的确定要在应用程序中使用这种行为吗?如果是这样,您仍然可以通过使用任意给定UIElement的
x:Key
常规
style
来实现这一点,该元素根据活动的
主题动态加载。