【问题标题】:WPF - Global Style?WPF - 全局样式?
【发布时间】:2010-08-25 20:32:16
【问题描述】:

有没有办法为我的 WPF 应用程序设置全局样式?

我希望做的是将样式应用于我的所有也有 Image 孩子的按钮。

【问题讨论】:

    标签: wpf xaml styles global


    【解决方案1】:

    嗯,有点 - 这是你可以做的一种包罗万象的方法 - 将以下元素放在你的 App.xaml 中 - 你的所有按钮都会改变(除了那些你手动应用样式的按钮)。

    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... -->
    </Style>
    

    但是,如果您只想点击带有图像的按钮 - 您必须每次都从 Button 继承,然后应用如下样式:

    public class CustomImageButton:Button{}
    <Style TargetType="{x:Type local:CustomImageButton}">
        <Setter Property="Background" Value="LimeGreen"/>
    </Style>
    <local:CustomImageButton Content="ClickMe"/>
    

    这是一种非常粗粒度的全局样式 - 您需要遵循约定才能使其发挥作用。

    另一种方法是使用主题 - 阅读更多关于 here 的信息。

    【讨论】:

    • 不幸的是,主题的链接已失效。 Here 是 MSDN 上一篇关于使用可能相似的主题的文章的链接。
    【解决方案2】:

    将样式放入 App.xaml 中的 ResourceDictionary 标记中,它将应用于整个应用程序。

    【讨论】:

      【解决方案3】:

      您可以在 WPF 中执行按类型应用的隐式样式

      例如

      <Style TargetType="Button">
      

      将应用于该样式范围内的所有按钮(如果该样式在 App.XAML 中,它将应用于所有按钮,如果它在链中较低,它将应用于其下方的所有按钮)

      如果您只想将其应用于某些类型的按钮(例如 imagebuttons),请创建一个派生自按钮的类型(称为 ImageButton),然后创建针对该类型的样式。

      【讨论】:

      • OK...这种作品。我的一个按钮似乎尊重这一变化,但其他按钮却没有。如果我给样式一个x:Key,然后使用Style="{StaticResource DisabledButton}" 从每个按钮显式调用它,它们都可以工作。有什么方法可以避免必须为每个按钮添加显式引用?
      • 确保定义此样式的资源字典在您需要应用该样式的所有按钮的范围内。将此样式放在 App.xaml 中将对应用程序中的所有按钮可见。向下移动会限制它的可见性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 2010-10-28
      相关资源
      最近更新 更多