我正在尝试自定义我的ToggleButtons,以便在检查时他们用绿色表示“是”,如果没有选中,则用红色表示“否” .
我创建了以下样式,它位于我的样式资源字典中 .
<!-- ToggleButtons -->
<Style x:Key="YesNoToggleStyle" TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="SpringGreen" />
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="Yes"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background" Value="Crimson" />
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="No"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
这有点......有点儿 . 如果ToggleButton是任一值的最后一个,则它会正确显示 . 具有相同值的所有先前按钮均为空白 . 身高也在缩小,但我用触发器上方的'Height'Setter修正了它 . 为了说明,当创建新记录时,它看起来像:
并在我再次点击按钮1,2和3以后:
我最初有从周围网格引用的样式:
<Grid>
...
<Grid.Resources>
<Style BasedOn="{StaticResource YesNoToggleStyle}" TargetType="{x:Type ToggleButton}" />
</Grid.Resources>
但改变这一点,以便每个ToggleButton单独引用样式( <ToggleButton Style="{StaticResource YesNoToggleStyle}" ... />
)并没有什么不同 .
我看了Customizing the toggle state of a toggle button in wpf和Override ToggleButton Style,效果是一样的,但是他们谈论外部图像,我的问题都在wpf中 .
我还看了第二个答案:i want to change backcolor of toggle button when toggle button ischecked and viceversa in WPF但是a)我只有VS2012附带的混合sketchflow预览,并且b)我在答案中从 Select the "Checked State"
到 Reset the Background Color
指令(如果这个任务我会感到惊讶)需要混合工具) .
任何人都可以告诉我该怎么做才能让多个ToggleButtons正确使用相同的风格?
3 回答
这适合我 . 某处
Dictionary1.xaml
:请注意,该样式基于
ToolBar.ToggleButtonStyle
.尝试将Content属性替换为ContentTemplate:
在我的情况下,我希望在一个公共dll中有一个“Locked”ToggleButton,并在我的应用程序中重复使用 . 这是我的结果,对我有用 . 也许有人发现它很有用(把它放在Resourcedictionary.xaml中):
致记:
Setting Button's Content to <Image> via Styles
Setter Target Name not recognized