WPF最佳实践:自定义控件适合MVVM设计吗?我想创建一个我可以在我的页面上重复使用的通用控件:一个具有Address1、Address2、City、State、Zip等的AddressControl...最初我只是创建了一个包含所有这些项目的类(AddressEntity)和实施INotifyPropertyChanged。我将该类作为DependencyProperty包含在AddressControl的代码隐藏中,并将其用作DataContext以绑定其属性。然后,有人说我的代码很难看,我应该看看MVVM。看着它,我想:问题是我见过的每个例子都有一个UserControl作为View而不是CustomControl。在深入研究之前...参考:WPFCustomControls的模型-视图-视图模型(MVVM)设计模式永远不会用mvvm完成。您需要可重用的数据视图(用户控件),而不是控件(自定义控件)。UserControls和CustomControls是两个完全不同的野兽。编辑:尽管为什么首先要开发UserControls,但在MVVM中,当您需要特定于您的模型/视图模型的可重用视图时,通常会使用UserControls。它只是没有任何代码的XAMl(自动生成的InitializeComponent内容除外)。通常,您将UserControl保存在您使用它的同一个项目中。当您需要一个需要视图并且甚至可能超出当前应用程序范围的通用功能时,您可以使用CustomControl。这个控件实际上是在代码文件中定义的,外观(可以被覆盖)来自资源字典中的XAML。通常,您将CustomControl保存在单独的ControlLibrary项目中,并引用您希望在其中使用的项目中的库。恕我直言WallStreetProgrammer,仅根据是否需要无皮肤控件来选择用户控件和自定义控件有点天真。使用MVVM时,Model和ViewModel不应该依赖于View,这意味着它们不应该关心使用它们的View的类型。WPF中自定义控件和用户控件的区别在于,自定义控件是无皮肤的,可以通过其ControlTemplate进行自定义。如果您正在编写通用控件库(如Microsoft的),那么您应该编写这些。然而,如果你有一个你控制的特定外观,只使用用户控件,它会快得多,但只有一种外观,即你为它定义的外观。在MVVM项目中混合使用自定义控件和用户控件是很常见的。例如,您可以将一堆Microsoft的自定义控件(如文本框和文本块)组合成一个用户控件。参见ControlAuthoringOverview以上是C#学习教程:WPF最佳实践:自定义控件是否适合MVVM设计?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
