我正在寻找一种简单的方法来设置我的Silverlight应用程序中的每个Control上的ClickMode =“Pressed”(显然从ButtonBase继承)。
该解决方案还应该访问任何ButtonBase-Control,它是像SilverlightToolkit的ComboBox一样的controltemplate的一部分。
我是否必须为此创建自定义主题?如果是,我如何重用现有主题并覆盖此属性?
提前致谢。
答案 0 :(得分:1)
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及其子类创建样式。
答案 1 :(得分:0)
你实际回答了自己的问题。是的,您可以使用现有样式来确保在应用程序中的每个ButtonBase控件上设置ClickMode属性。这是一种让你前进的风格。这是一种未命名的样式,它将确保从ButtonBase扩展的任何控件都将继承此样式。
<Style TargetType="ButtonBase">
<Setter Property="ClickMode" Value="Pressed"/>
</Style>
我希望这会有所帮助。