【发布时间】:2010-08-25 20:32:16
【问题描述】:
有没有办法为我的 WPF 应用程序设置全局样式?
我希望做的是将样式应用于我的所有也有 Image 孩子的按钮。
【问题讨论】:
有没有办法为我的 WPF 应用程序设置全局样式?
我希望做的是将样式应用于我的所有也有 Image 孩子的按钮。
【问题讨论】:
嗯,有点 - 这是你可以做的一种包罗万象的方法 - 将以下元素放在你的 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 的信息。
【讨论】:
将样式放入 App.xaml 中的 ResourceDictionary 标记中,它将应用于整个应用程序。
【讨论】:
您可以在 WPF 中执行按类型应用的隐式样式
例如
<Style TargetType="Button">
将应用于该样式范围内的所有按钮(如果该样式在 App.XAML 中,它将应用于所有按钮,如果它在链中较低,它将应用于其下方的所有按钮)
如果您只想将其应用于某些类型的按钮(例如 imagebuttons),请创建一个派生自按钮的类型(称为 ImageButton),然后创建针对该类型的样式。
【讨论】:
x:Key,然后使用Style="{StaticResource DisabledButton}" 从每个按钮显式调用它,它们都可以工作。有什么方法可以避免必须为每个按钮添加显式引用?