【问题标题】:Difference between User Control and Custom Control Library [duplicate]用户控件和自定义控件库之间的区别 [重复]
【发布时间】:2010-06-07 19:57:28
【问题描述】:

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

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

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

    然而,CustomControl 是一个新的单一控件。这通常会替代内置控件(无法通过模板重做)。我发现在 WPF 中对 CustomControls 的需求实际上是相当少的,因为 WPF 模板选项和附加属性允许您使用标准控件执行几乎任何操作,只要您完全了解它们。

    【讨论】:

    • 感谢您的解释。在我看来,我需要做的是使用用户控件项目而不是自定义控件库项目。
    • 这不能回答问题。问题是自定义控件和用户控件之间有什么区别。我可以接受这个答案并推断我应该使用哪一个,但它仍然没有告诉我这两个项目模板有何不同。
    • 技术上我同意你@JoelMcBeth 但它仍然是一个非常有用的好帖子。我试图对其他地方提出的相同问题给出更完整的答案(stackoverflow.com/a/70308458/184528)。我当然相信 Reed。
    【解决方案2】:

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

    【讨论】:

    • 你是对的。这就是为什么在使用 WPF 时必须优先考虑组合而不是继承。
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2010-11-02
    • 2011-07-12
    • 2010-11-22
    • 1970-01-01
    • 2014-01-17
    • 2014-06-11
    相关资源
    最近更新 更多