我只是在Silverlight中弄湿了,并没有真正理解创建UserControl与为同一任务创建控件的差异和优缺点(就像在右键单击选项时一样)例如,Expression Blend。
似乎选择“Make Into Control”只是为您指定的基类型创建一个新模板,而创建UserControl则创建一个全新的基类。这是对的吗?
Screenshot http://tinyurl.com/yjsaox9
在这个特定的例子中,我正在创建一个自定义文本框控件,它只接受数字,并将自己分成3个部分,将3个值存储到单独的属性中,如下图所示。在这种特殊情况下,哪种情况最好?
Screenshot 2 http://tinyurl.com/y9x7zox
更新(附加问题):为什么我不能将模板绑定与UserControl一起使用,但我可以使用Control?这就是我认为制作UserControl可能不是正确决定的原因之一。
答案 0 :(得分:8)
UserControls是一个复合控件 - 基本上是一堆其他“控件”组合在一起,作为一个单一的,有凝聚力的单元。
另一方面,自定义控件旨在用作单个控件。想想框架中的基本控件,比如TextBox或Button - 如果你实现了类似的东西,你需要一个Control。 (这比UserControls少见,特别是在WPF中,因为你可以在基类控件上使用模板来完成很多你需要在其他框架中使用自定义控件的东西)。自定义控件就是为单个“控件”定义新行为。
答案 1 :(得分:4)
如果您认为您的控件是一组三个文本框,那么UserControl
是合适的,但如果您的控件仍然 <{1}}那么您应该通过“Make into control。”来扩展现有的控制。
听起来你需要TextBox
给我。
答案 2 :(得分:3)
Dov,我想你已经用你的更新回答了你自己的问题。当您想要制作支持模板的控件时,自定义控件最有用。否则,当您从其他控件继承以干净地添加功能时,它们非常有用(TextBox - &gt; PasswordTextBox)。