用户控件与自定义控件库的区别

时间:2010-06-07 19:57:29

标签: c# wpf

我正在使用C#2008在WPF中创建日期/时间用户控件。我的第一个用户控件。我也在使用Matthew MacDonald的书“C#2008中的Pro WPF”。在那本书中,他强烈建议使用WPF自定义控件库项目模板创建用户控件;所以我听从了他的建议。我已经完成了编写代码,这些代码将被我认为是代码隐藏文件。现在我准备写XAML了。

唯一的问题是,我刚发现没有相应的.xaml文件?所以,我不明白为什么在编写用户控件时使用WPF自定义控件库项目更好或者更喜欢?

2 个答案:

答案 0 :(得分:29)

用户控件和自定义控件解决了两个截然不同的问题。

UserControls旨在将多个WPF控件组合在一起,以便创建一组由其他控件构建的功能。这通常用于组成窗口或屏幕的一部分,以便通过允许您将多个功能组合成一个“控件”来组织开发。例如,如果您想创建一个控件来编辑提供名字,姓氏,年龄等文本框的用户,可以将单个UserControl拖放到Window上并绑定到User实例进行编辑。 (在这种情况下,您使用标准控件(如TextBox)来“组合”控件以实现更复杂的目的。)

然而,CustomControl是一个新的单一控件。这通常是内置控件的替代品(无法通过模板重做)。我发现在WPF中对CustomControls的需求实际上相当少,因为WPF模板选项和附加属性允许你在完全学习它们之后用标准控件做任何事情。

答案 1 :(得分:1)

我还想补充一点,如果你打算从你的控件继承,那么使用usercontrol会使问题复杂化。例如,如果创建具有在Xaml中定义的布局的基本用户控件,则WPF框架将不允许您继承此控件并使用Xaml来定义子类的布局。在dotnet 3.5中,Xaml控件不能从另一个Xaml控件继承