用户控制库和自定义控制库之间有什么区别?

我只是想加快WPF,并想创build一个可重用的WPF控件。

当我看在Visual Studio中创build项目的选项,我看到“WPF用户控制库”和“WPF自定义控制库”。 我不清楚他们之间有什么不同,我的Googlesearch没有得到任何体面的解释。

我想了解他们之间的差异,理想地看一些什么时候使用一个的例子。

实际上,自定义控件是您在代码级别实现的,而您可以将XAML用于用户控件。 自定义控件扩展了其中一个WPF控件基类,并通过代码提供了附加function,因此所有添加的逻辑和表示都必须在代码中实现。

用户控件在技术上是一个普通的内容控件,可以在代码的某些部分进行扩展,但通常通过在其中放置其他控件来进行扩展。 正如Kent提到的,UserControl是其他控件的集合。 这极大地限制了用户可以执行的操作。 使用起来更容易,但比完整的自定义控件更有限。

这些控件与运行时的观点有一点不同。 在构build应用程序并将UserControl放入其中时,控件树将在其中包含一个具体的UserControl模板。 所以如果我们考虑一个专门button的蹩脚的例子。 如果您使用的是用户控件,则可以在<UserControl>元素内添加一个button。 当使用自定义控件时,您最有可能从button派生控件本身。 差异将在逻辑树中可见。

而自定义控件将提供一个类似于的逻辑树

  • 窗口
    • 的CustomButton

UserControl将给出一个逻辑树

  • 窗口
    • CustomButtonUserControl
      • 按键

所以最后UserControl只是一个普通的ContentControl,你可以扩展一下,你可以预定义内容。 自定义控件以易于实现的价格提供了更大的灵活性,因为您必须执行代码中的所有逻辑和交互操作,而不是享受XAML的好处。

尽pipe如此,我不认为在Visual Studio模板中有太多的不同。 最有可能的Visual Studio自定义控件只是创build一个空的自定义控件的项目,而用户控件项目是一个空的用户控件的项目。 您稍后可以将任何types的项目添加到项目中。

更新

我的意见是什么时候使用自定义控件和用户控件是,如果你可以用一个用户控件完成一些事情,并且逻辑树中的额外控制元素不打扰你,使用一个用户控件,因为它们更容易创build和维护。 只有当您有一个不使用用户控件的原因时才使用自定义控件。

一个Control表示一些可换肤的行为(模板化),而一个UserControl通常是特定于应用程序的UserControl的更高级别的聚合。

更多信息在这里 。