何时在Silverlight中使用UserControl和Control?

11

我刚开始涉足Silverlight,对于创建UserControl和创建同样任务的控件(例如,在Expression Blend中右键单击选择时)的区别和优缺点并不理解。

似乎选择 "Make Into Control" 只是为指定基类型创建一个新模板,而创建UserControl则创建一个全新的基类。这正确吗?

在这个特定的例子中,我正在创建一个自定义文本框控件,仅接受数字,并将自己分成3个部分,分别存储3个值到不同的属性中,如下所示。在这种情况下,哪个最好?

3个回答

8

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

另一方面,自定义控件旨在用作单个控件。想象一下框架中的基本控件,例如TextBox或Button - 如果您要实现类似的功能,则需要一个Control。(这比UserControls更不常见,特别是在WPF中,因为您可以在基类控件上使用模板来完成许多需要自定义控件的事情)。自定义Control完全是关于为单个“控件”定义新行为的。


有没有办法在UserControl中使用模板绑定? - Dov
1
嗯,对于组合控件中的单个元素模板(例如:TextBox将使用分配给TextBoxes的模板),将应用于用户控件(前提是它没有自己的模板),但你不能像自定义控件那样获得相同级别的主题支持。 - Reed Copsey

4
如果您认为您的控件是由三个文本框组成的,则使用 UserControl 是合适的,但如果您的控件本质上仍然是一个 TextBox,则应该使用“将其制作成控件”扩展现有控件。
对我来说,这听起来像是您需要一个 UserControl

3
Dov,我认为您在更新中已经回答了自己的问题。当您想要创建支持模板的控件时,自定义控件非常有用。否则,当您从其他控件继承以清晰地添加功能时,它们也很有用(例如TextBox->PasswordTextBox)。

是的,对我来说自定义控件肯定是最合适的选择。谢谢。 - Dov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接