您已经有了一些很好的答案来解释差异,但也了解自定义控件并UserControls
具有不同的目的:
AUserControl
通常封装了某种复合行为。例如,如果您的应用程序需要在许多地方编辑联系人详细信息,您可以创建一个自定义控件,该控件具有所有数据的标签和文本字段,并使用具有相关代码的提交按钮并重用此控件在整个应用程序中。
自定义控件是从WPF
控件类(EG等)之一派生的控件Control
,ContentControl
并且必须在代码中创建。这些控制通常有一个统一的目的(想想、、、TextBox
)ComboBox
,Label
而不是作为一个整体一起行动(尽管不一定是这样)。
UserControl
's 通常对于不熟悉的人来说更容易,WPF
因为它们可以在视觉上进行设计。
我的建议是从UserControl
. 随着您对工作方式越来越熟悉,您可以随时将其重构为自定义控件WPF
。将控件创建为自定义控件需要了解ControlTemplate
s 和Style
s,因为您需要提供自己的知识来定义控件的外观。
说完所有,只要控件运行正确,您使用哪种方法都没有关系。
有关同一问题的两种方法的示例,请参见这篇文章。帖子作者想要一个可以在主要内容前面呈现模态内容的控件。帖子作者实际上通过将其实现为UserControl
. 我在帖子中添加了一个答案,该帖子将控件创建为自定义控件,但两者都具有相同的最终效果。