2010-06-07 84 views
18

我正在使用C#2008在WPF中创建日期/时间用户控件。我的第一个用户控件。我还使用Matthew MacDonald的书“C#2008中的临WPF”。在这本书中,他强烈建议使用WPF自定义控件库项目模板创建用户控件;所以我遵循了他的建议。我已经完成了写入代码的代码,这些代码将进入我认为的代码隐藏文件中。现在我准备写XAML。用户控件和自定义控件库之间的区别

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

回答

28

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

UserControls旨在将多个WPF控件组合在一起,以便使一组功能构建出其他控件。这通常用于组成窗口或屏幕的一部分,以便通过允许将多个功能组合到一个“控件”中来组织您的开发。例如,如果您想要编辑提供用于姓名和年龄等文本框的用户的控件,则可以将一个UserControl放置到Window上并绑定到User实例以编辑该控件。 (在这种情况下,您使用标准控件(例如TextBox)为更复杂的目的“编写”控件)。但是,CustomControl旨在成为新的单一控件。这通常是内置控件的替代品(不能通过模板重做)。我发现在WPF中对CustomControls的需求实际上非常少见,因为WPF模板选项和附加属性允许您在完全学习它们时使用标准控件执行几乎任何操作。

+0

感谢您的解释。在我看来,我需要做的是使用用户控制项目,而不是自定义控件库项目。 – Rod 2010-06-07 20:49:39

+3

这不回答这个问题。问题是自定义控件和用户控件库**之间有什么区别。我可以采取这个答案并且推断我应该使用哪一个,但是它仍然没有告诉我这两个项目模板是如何不同的。 – jcmcbeth 2013-07-10 13:49:28

1

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

+0

你说得对。这就是为什么在使用WPF时,必须赞成Composition作为继承。 – 2015-04-27 11:11:41