1

我正在寻找一种简单的方法来在我的 Silverlight 应用程序中的每个控件上设置 ClickMode="Pressed"(显然继承自 ButtonBase)。

该解决方案还应该访问作为控件模板一部分的任何 ButtonBase-Control,例如 SilverlightToolkit 的 ComboBox。

我必须为此创建一个自定义主题吗?如果是,我如何重用现有主题并覆盖此属性?

提前致谢。

4

2 回答 2

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 及其子类创建样式。

于 2010-08-10T14:11:01.140 回答
0

你实际上回答了你自己的问题。是的,您可以使用现有样式来确保在您的应用程序中的每个 ButtonBase 控件上设置 ClickMode 属性。

这是一种让你前进的风格。这是一个未命名的样式,它将确保从 ButtonBase 扩展的任何控件都将继承此样式。

 <Style TargetType="ButtonBase">
        <Setter Property="ClickMode" Value="Pressed"/>
 </Style>
于 2010-08-10T12:35:09.043 回答