我正在寻找一种简单的方法来在Silverlight应用程序(显然是从ButtonBase继承的)中的每个控件上设置ClickMode =“ Pressed”。
该解决方案还应该访问作为控件模板一部分的任何ButtonBase-Control,例如SilverlightToolkit的ComboBox。
我必须为此创建自定义主题吗?如果是,我如何重用现有主题并覆盖该属性?
提前感谢。
您实际上回答了自己的问题。是的,您可以使用现有样式来确保在应用程序中的每个ButtonBase控件上都设置了ClickMode属性。
这里有一种风格,可以助您一臂之力。这是一种未命名的样式,它将确保从ButtonBase扩展的所有控件都将继承此样式。
<Style TargetType="ButtonBase">
<Setter Property="ClickMode" Value="Pressed"/>
</Style>
http://msdn.microsoft.com/en-us/library/system.windows.style%28v=VS.95%29.aspx在隐式样式下:
在Silverlight 4中,您可以隐式设置样式。也就是说,您可以将某种样式应用于某种类型的所有元素。当声明的资源没有x:Key值时,x:Key值将采用TargetType属性的值。如果隐式设置样式,则样式将仅应用于与TargetType完全匹配的类型,而不应用于从TargetType值派生的元素。例如,如果您为应用程序中的所有ToggleButton控件隐式创建样式,并且您的应用程序具有ToggleButton和CheckBox控件(CheckBox派生自ToggleButton),则该样式仅应用于ToggleButton控件。
因此似乎无法为ButtonBase及其子类创建样式。