何时在 Silverlight 中使用 UserControl 与 Control?

Posted

技术标签:

【中文标题】何时在 Silverlight 中使用 UserControl 与 Control?【英文标题】:When to use UserControl vs. Control in Silverlight? 【发布时间】:2010-12-27 17:56:45 【问题描述】:

我只是在 Silverlight 中沾沾自喜,并不真正了解创建 UserControl 与为同一任务创建控件的区别和优缺点(就像右键单击例如,Expression Blend 中的选择)。

似乎选择“进入控制”只是为您指定的基类型创建一个新模板,而创建UserControl 会创建一个全新的基类。对吗?

在这个特定的实例中,我正在创建一个自定义文本框控件,它只接受数字,并将自身分为 3 个部分,将 3 个值存储到单独的属性中,如下图所示。在这种特殊情况下,哪个最好?

【问题讨论】:

【参考方案1】:

如果您认为您的控件是一组三个文本框,那么 UserControl 将是合适的,但如果您的控件本质上仍然 TextBox,那么您应该扩展现有的用“控制”来控制。

听起来你需要UserControl

【讨论】:

【参考方案2】:

UserControls 是一个复合控件 - 基本上是一堆其他“控件”组合在一起,作为一个单一的、有凝聚力的单元工作。

另一方面,自定义控件旨在用作单个控件。想想框架中的基本控件,例如 TextBox 或 Button - 如果您正在实现类似的东西,您会想要一个 Control。 (这比 UserControls 少见,尤其是在 WPF 中,因为您可以在基类控件上使用模板来完成很多您需要在其他框架中自定义控件的事情)。自定义控件就是为单个“控件”定义新行为。

【讨论】:

有什么方法可以通过 UserControl 使用模板绑定? 好吧,复合控件中各个元素的模板(即:TextBox 将选取分配给 TextBoxes 的模板)将应用于用户控件(前提是它不提供自己的),但是您无法获得与使用自定义控件相同级别的主题支持。【参考方案3】:

Dov,我想你已经用你的更新回答了你自己的问题。当您想要制作支持模板的控件时,自定义控件最有用。否则,当您从其他控件继承以干净地添加功能(TextBox -> PasswordTextBox)时,它们很有用。

【讨论】:

是的,自定义控件对我来说绝对是最有意义的。谢谢。

以上是关于何时在 Silverlight 中使用 UserControl 与 Control?的主要内容,如果未能解决你的问题,请参考以下文章

何时使用RX

ADO.NET Entity Framework 和 NHibernate - 何时使用其中之一

何时实际调用 IAttachedObject.Detach() (KeyTrigger.Detaching()) 方法?

在 silverlight 中使用 WCF CloseAsync

在 Silverlight 中获取当前 Windows 用户名

在 Silverlight 的域服务中使用 Linq