【问题标题】:Set ClickMode for all Button-like Controls in Silverlight在 Silverlight 中为所有类似按钮的控件设置 ClickMode
【发布时间】:2011-03-27 19:05:57
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: silverlight button silverlight-4.0 silverlight-toolkit


    【解决方案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 及其子类创建样式。

    【讨论】:

      【解决方案2】:

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

      这里有一种风格可以助你一臂之力。这是一个未命名的样式,它将确保从 ButtonBase 扩展的任何控件都将继承此样式。

       <Style TargetType="ButtonBase">
              <Setter Property="ClickMode" Value="Pressed"/>
       </Style>
      

      【讨论】:

      • 感谢您的回答。你把这个放在哪里?我之前在 标记中尝试过此操作,但没有成功。顺便说一句:我刚刚注意到该模式实际上被称为“Press”
      • 您可以将其放在 标记中,但如果您希望将样式应用于应用程序中的所有控件(不仅仅是特定的用户控件),则使用资源字典并引用它在 App.xaml 文件中 这篇文章应该澄清您对 silverlight 中的样式有任何疑问。 silverlightshow.net/items/…
      • 我现在使用了在应用程序启动时加载的外部资源字典,但 TargetType=ButtonBase 似乎不起作用。当我有 TargetType=Button 的样式时,它可以工作,很奇怪。也许 ClickMode 被 buttonbase 的每个子类的默认样式覆盖?
      • 这可能会有所帮助stackoverflow.com/questions/2363774/…
      猜你喜欢
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多