Wpf 将按钮切换为单选按钮样式

Wpf 将按钮切换为单选按钮样式,wpf,wpf-controls,Wpf,Wpf Controls,我想把一些切换按钮组合起来,让它们像单选按钮一样工作。因此,我所做的是将单选按钮添加到我的xaml中,并创建了以下样式: <Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="RadioButton"> <Setter Property="FontFamily" Value="Arial"/> <Setter Property="FontSize" Value="12"/>

我想把一些切换按钮组合起来,让它们像单选按钮一样工作。因此,我所做的是将单选按钮添加到我的xaml中,并创建了以下样式:

<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="RadioButton">
  <Setter Property="FontFamily" Value="Arial"/>
  <Setter Property="FontSize" Value="12"/>
  <Setter Property="Foreground" Value="White"/>
  <Style.Triggers>
    <Trigger Property="IsChecked" Value="True">
      <Setter Property="Background" Value="Red"/>
    </Trigger>
  </Style.Triggers>
</Style>

现在单选按钮看起来像切换按钮,并且应用了样式的字体和前景属性,但是如果单击其中一个切换按钮,背景不会更改为红色。如果我根据IsChecked更改前景,它会工作,但当IsChecked为true时,我无法更改背景

有什么想法吗

更新:

默认的ToggleButton样式似乎不使用Background属性。我现在使用下面的代码来解决我的问题。如果有人发现下面有什么问题,请告诉我

<DataTemplate x:Key="RedBackground">
      <Grid Background="Red">
        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="{Binding}"/>
      </Grid>
    </DataTemplate>

    <Style TargetType="ToggleButton">
      <Style.Triggers>
        <Trigger Property="IsChecked" Value="True">
          <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
          <Setter Property="VerticalContentAlignment" Value="Stretch"/>
          <Setter Property="ContentTemplate" Value="{StaticResource RedBackground}"/>
        </Trigger>
      </Style.Triggers>
    </Style>

您所基于的样式是否使用了
Background
属性,除非它是“由用户”设置的?也就是说,您可以使用style for toggle按钮直到现在,并显式地将背景设置为红色以获得所需的效果吗

样式中的触发器看起来不错,但有些样式忽略了主题渲染的背景等属性,因此在触发器中设置这些属性不会起任何作用


另一个可能的原因是-当值设置为“本地”时,值将覆盖样式中给定的值(即使通过触发器设置)。因此,如果您的
标签设置了背景,触发器将不起任何作用。

如果您在
单选按钮上显式地将
背景设置为
红色
,它实际工作吗?是。在单选按钮上设置Background=“Red”会显示一个红色背景的切换按钮。嘿,菲利普。我又找了些,看来你是对的。我所基于的样式不使用Background属性。我用找到的解决方案更新了我的问题。谢谢你的帮助。