【发布时间】:2013-03-03 17:44:58
【问题描述】:
我正在尝试自定义我的 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 是任一值的最后一个,则它会正确显示。之前所有具有相同值的按钮都是空白的。高度也在缩小,但我用触发器上方的“高度”设置器修复了它。为了说明,当创建新记录时,它看起来像:
在我再次单击按钮 1、2、3 和 1 后:
我最初有从周围网格引用的样式:
<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 附带的 blend + sketchflow 预览,b) 我完全是一个 blend 菜鸟,无法从 @987654329 获得@ to Reset the Background Color 答案中的指令(如果此任务需要混合工具,我会感到惊讶)。
谁能告诉我如何让多个切换按钮正确使用相同的样式?
【问题讨论】:
标签: c# wpf controltemplate togglebutton