问题 何时在Silverlight中使用UserControl与Control?


我只是在Silverlight中弄湿了,并没有真正理解创建UserControl与为同一任务创建控件的差异和优缺点(就像在右键单击Expression Blend中的选择时一样)例如)。

看起来选择“Make Into Control”只是为您指定的基类型创建一个新模板,而创建UserControl则创建一个全新的基类。那是对的吗?

截图http://tinyurl.com/yjsaox9

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

屏幕截图2 http://tinyurl.com/y9x7zox

更新 (附加问题):为什么我不能将模板绑定与UserControl一起使用,但我可以使用Control?这就是我认为制作UserControl可能不是正确决定的原因之一。


9426
2017-12-17 17:06


起源



答案:


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


3
2017-12-17 19:49



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


答案:


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


3
2017-12-17 19:49



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


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

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


8
2017-12-17 17:19



有没有办法使用模板绑定与UserControl? - Dov
那么,复合控件中的各个元素的模板(即:TextBox将拾取分配给TextBoxes的模板)将应用于usercontrol(前提是它不提供它自己的),但是你没有达到相同的级别使用自定义控件进行主题支持。 - Reed Copsey


如果你认为你的控件是一组三个文本框,那么a UserControl 这是合适的,但如果你的控制仍然是基本的  一个 TextBox 然后你应该用“Make into control”来扩展现有的控件。

听起来你需要一个 UserControl 对我来说。


4
2017-12-17 17:12