簡體   English   中英

WPF:更改按鈕背景和字體不起作用

[英]WPF: Changing button background and font is not working

我在StackPanel有一個按鈕列表。 這些按鈕允許我在不同的用戶控件之間切換。 當按下一個按鈕時,我希望按鈕樣​​式發生變化,以便用戶可以知道哪個按鈕處於活動狀態。 為了實現這一點,我實現了一個樣式觸發器,可以在單擊或鼠標懸停時切換背景顏色和文本字體。 這是代碼:

<Button Uid="0" Width="120" Content="Manage" Height="50" Background="{x:Null}" 
        BorderBrush="{x:Null}" FontWeight="DemiBold" Click="Button_Click">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True"/>
                        <Condition Property="IsFocused" Value="True"/>
                        <Condition Property="IsPressed" Value="True"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Background" Value="LightBlue"/>
                        <Setter Property="BorderBrush" Value="DarkBlue"/>
                        <Setter Property="BorderThickness" Value="2"/>
                        <Setter Property="TextBlock.FontWeight" Value="Bold"/>
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>
        </Style>                    
    </Button.Style>
</Button>
<Button Uid="1" Width="120" Content="Settings" Height="50" Background="{x:Null}" 
        BorderBrush="{x:Null}" FontWeight="DemiBold" Click="Button_Click"/>         

但是,此代碼不起作用,我無法弄清楚原因。

我已經看到多個問題與相同的問題,似乎我做得對,但不知何故,當我運行應用程序時,樣式不起作用。 任何線索,為什么?

如果您將使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM