C# WPF:更改按钮背景和字体无效

C# WPF:更改按钮背景和字体无效,c#,wpf,xaml,C#,Wpf,Xaml,我在堆栈面板中有一个按钮列表。这些按钮允许我在不同的用户控件之间切换。当按下一个按钮时,我希望更改按钮样式,以便用户可以知道哪个按钮处于活动状态。为了实现这一点,我实现了一个样式触发器,可以在单击或鼠标悬停时切换背景颜色和文本字体。代码如下: 然而,这段代码不起作用,我不知道为什么 我见过多个问题都是同一个问题,看起来我做得不错,但不知何故,当我运行应用程序时,样式不起作用。任何关于原因的线索?如果您使用RadioButton并应用ToggleButton中的样式,将会简单得多。然后,您可以

我在
堆栈面板中有一个按钮列表
。这些按钮允许我在不同的用户控件之间切换。当按下一个按钮时,我希望更改按钮样式,以便用户可以知道哪个按钮处于活动状态。为了实现这一点,我实现了一个样式触发器,可以在单击或鼠标悬停时切换背景颜色和文本字体。代码如下:


然而,这段代码不起作用,我不知道为什么


我见过多个问题都是同一个问题,看起来我做得不错,但不知何故,当我运行应用程序时,样式不起作用。任何关于原因的线索?

如果您使用
RadioButton
并应用
ToggleButton
中的样式,将会简单得多。然后,您可以使用属性
IsChecked
设置按钮的样式

请看我的例子:

<StackPanel>
  <StackPanel.Resources>
      <Style x:Key="MenuButtonStyle" TargetType="RadioButton" BasedOn="{StaticResource {x:Type ToggleButton}}">
          <Setter Property="Background" Value="{x:Null}"/>
          <Setter Property="BorderBrush" Value="{x:Null}"/>
          <Setter Property="BorderThickness" Value="0"/>
          <Setter Property="TextBlock.FontWeight" Value="DemiBold"/>
          <Style.Triggers>
              <DataTrigger Binding="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" Value="True">
                  <Setter Property="Background" Value="LightBlue"/>
                  <Setter Property="BorderBrush" Value="DarkBlue"/>
                  <Setter Property="BorderThickness" Value="2"/>
                  <Setter Property="TextBlock.FontWeight" Value="Bold"/>
              </DataTrigger>
          </Style.Triggers>
      </Style>
  </StackPanel.Resources>
  <RadioButton  Uid="0" Width="120" Content="Manage" Height="50" Style="{StaticResource MenuButtonStyle}"/>
  <RadioButton  Uid="1" Width="120" Content="Settings" Height="50" Style="{StaticResource MenuButtonStyle}" />
</StackPanel>


“管理”按钮在按下时工作正常。如果是MouseUp状态,则返回到原始状态。因此,如果单击“管理”按钮,则该按钮看起来不起作用。如果要在单击时更改按钮的外观,则应使用ToggleButton而不是按钮。为什么不能尝试使用。您应该阅读有关值优先级的内容:谢谢,这很好。但只适用于背景色。上的字体大小、边框笔刷和边框厚度没有更改click@BrunoBukavuThai对不起,我的朋友,这是我的错。在这种情况下,应该在绑定表达式中使用RelativeSource。请再次检查我的答案:)现在工作完美了。谢谢@kmatyaszek