我刚开始学习WPF,并希望创建一个可重用的WPF控件。
当我查看在Visual Studio中创建项目的选项时,我看到“WPF用户控件库”和“WPF自定义控件库”。对我来说不清楚它们之间的区别,我的谷歌搜索没有找到任何合适的解释。
我想了解它们之间的区别,最好能看到一些何时使用其中一个而不是另一个的示例。
<UserControl>
元素中添加一个按钮。如果使用自定义控件,则可能会从按钮派生出控件本身。这两者的区别在逻辑树中将会体现出来。关于何时使用自定义控件和用户控件,我的观点是,如果你可以用用户控件完成某些功能,且逻辑树中的额外控件元素不会影响你,那么就使用用户控件,因为它们更容易创建和维护。只有在有理由不使用用户控件时,才使用自定义控件。
Control
表示可被定制主题的某些行为,而UserControl
通常是应用程序特定的一组高级Controls
。
更多信息请点击这里。
要回答原问题,两个库模板的主要区别在于一个带有默认的空用户控件,而另一个带有默认的空自定义控件。它们都是WPF类库。任何一个项目都可以包含零个或多个用户控件和零个或多个自定义控件。
此外,正如Novitchi S和Cameron Macfarland分别解释的那样,自定义控件库还添加了ThemeInfo
程序集属性,以解决控件的默认样式/模板的位置。
用户控件是WPF控件的聚合(包括其他用户控件),而自定义控件是从Control派生的类。
这篇MSDN文章提出了以下关于何时选择开发用户控件、自定义控件或派生自框架元素的建议。
UserControl
派生:Control
派生:FrameworkElement
派生:Reed Copsey解释说,“用户控件旨在将多个WPF控件组合在一起,以构建由其他控件构建的功能集”,并进一步分享他的经验称,“在WPF中,自定义控件的需要实际上相当少,因为WPF模板选项和附加属性允许您使用标准控件完成几乎任何事情。”
Mikko Rantanen 同样分享了他们的观点:"如果你可以使用用户控件完成某个任务且逻辑树中多余的控件不会影响到你,那么请使用用户控件,因为它们更容易创建和维护。"