Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight中何时使用UserControl与Control?_Silverlight_Controls_User Controls_Expression Blend - Fatal编程技术网

在Silverlight中何时使用UserControl与Control?

在Silverlight中何时使用UserControl与Control?,silverlight,controls,user-controls,expression-blend,Silverlight,Controls,User Controls,Expression Blend,我只是在Silverlight中湿了脚,并不真正理解创建UserControl与为同一任务创建控件的区别和优缺点(例如,在Expression Blend中右键单击一个选项) 似乎选择“makeintocontrol”只是为指定的基类型创建了一个新模板,而创建UserControl则创建了一个全新的基类。对吗 在这个特定的实例中,我创建了一个只接受数字的自定义文本框控件,并将其自身划分为3个部分,将3个值存储到单独的属性中,如下图所示。在这种特殊情况下,哪个最好?< p>如果您认为控件是一个三个

我只是在Silverlight中湿了脚,并不真正理解创建
UserControl
与为同一任务创建控件的区别和优缺点(例如,在Expression Blend中右键单击一个选项)

似乎选择“makeintocontrol”只是为指定的基类型创建了一个新模板,而创建
UserControl
则创建了一个全新的基类。对吗


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

< p>如果您认为控件是一个三个文本框组,那么<代码> UserControl < /代码>将是合适的,但是如果您的控件仍然基本上是<代码>文本框< /C> >,那么您应该将现有控件扩展为“使为控件”


听起来你需要一个
UserControl

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


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

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

有没有方法将模板绑定到UserControl?好的,复合控件中单个元素的模板(即:TextBox将拾取分配给TextBox的模板)将应用于UserControl(前提是它不提供自己的功能),但您没有像使用自定义控件那样获得相同级别的主题化支持。是的,自定义控件对我来说绝对是最有意义的。谢谢。