我的WPF窗口中有一些按钮控件,它们都有自己的用途,但需要根据其含义/任务进行不同的设置。
我知道使用样式你可以使用TargetType
全局样式按钮。
但是如果我想选择性地设置按钮呢?
计算器示例:某些按钮代表一个数字,其他按钮代表一个功能,如添加,分割。所以我想说数字按钮为绿色,功能按钮为蓝色。
我的方法是继承Button
并制作自定义按钮控件,NumberButton
,FunctionButton
,然后使用<Style TargetType="{x:Type my:NumberButton}">
等。
有没有更好的方法,而不是“黑客”?这可以在样式定义中有选择地完成吗?
谢谢。
答案 0 :(得分:0)
在WPF中使用Style
时,我们可以声明它们是由隐式应用而不是声明x:Key
值:
<Style TargetType="{x:Type SomeType}">
...
</Style>
这将隐式应用于SomeType
类型的所有控件。 {em}也可以声明由声明Style
值明确应用:
x:Key
...
<Style x:Key="SomeStyle" TargetType="{x:Type SomeType}">
...
</Style>
此<SomeType Style="{StaticResource SomeStyle}" />
仅适用于此一个控件。有关详细信息,请参阅MSDN上的Styling and Templating页面。
答案 1 :(得分:0)
如果您想将所有内容保存在一个隐式Style
中,那么一个解决方案可能是使用Tag
的{{1}}属性和Button
不同值的不同设置器1} p>
Trigger
你按钮的位置是
<Style TargetType="{x:Type my:NumberButton}">
<Setter Property="Background" Value="Red"/>
<Style.Triggers>
<Trigger Property="Tag" Value="GreenBackground">
<Setter Property="Background" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
答案 2 :(得分:0)
在您的样式中添加identifier会阻止它们被应用&#34;全局&#34;:
<Window.Resources>
<Style x:Key="NumberButton" TargetType={x:Type Button}/>
<Style x:Key="FunctionButton" TargetType={x:Type Button}/>
</Window.Resources>
现在,您可以通过引用每个按钮中特定样式的名称来按照自己的方式设置样式:
<Button Style="{StaticResource NumberButton}"/>