在静态资源样式上使用样式触发器,可以更改多个属性

时间:2019-11-08 14:02:25

标签: c# wpf

我正在使用Material Design XAML,并且试图在选中时将切换按钮图标和背景颜色设置为其他内容。

enter image description here

红色框代码

<ToggleButton ToolTip="MaterialDesignFlatPrimaryToggleButton"
              IsChecked="False"
              Grid.Column="2"
              Margin="78,58,99,52"
              Grid.Row="1">
    <Style TargetType="ToggleButton"
           BasedOn="{StaticResource MaterialDesignFlatPrimaryToggleButton}">
        <Style.Triggers>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Background" Value="Green" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ToggleButton>

绿色框代码

<ToggleButton Style="{StaticResource MaterialDesignFlatPrimaryToggleButton}"
              ToolTip="MaterialDesignFlatPrimaryToggleButton"
              IsChecked="False"
              Grid.ColumnSpan="2"
              Grid.Column="3"
              Margin="205,58,188,52"
              Grid.Row="1">
    <md:PackIcon Kind="WindowClose"
                 Foreground="Red"
                 Height="21"
                 Width="21"/>
</ToggleButton>

我当时想我可以使用basedon属性保留材料设计中的样式...如果可能的话。

我正在尝试保留样式,并更改图标并设置背景色(在选中时看起来像这样):

enter image description here

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您当前正在将Style设置为ToggleButton.Content
您必须定义嵌套在Style属性中的ToggleButton.Style

<ToggleButton ToolTip="MaterialDesignFlatPrimaryToggleButton"
          IsChecked="False"
          Grid.Column="2"
          Margin="78,58,99,52"
          Grid.Row="1">
  <ToggleButton.Style>
    <Style TargetType="ToggleButton"
           BasedOn="{StaticResource MaterialDesignFlatPrimaryToggleButton}">
      <Style.Triggers>
        <Trigger Property="IsChecked" Value="True">
          <Setter Property="Background" Value="Green" />

          <Setter Property="Content">
            <Setter.Value>
              <md:PackIcon Kind="SmileyHappy" />
            </Setter.Value>
          </Setter>
        </Trigger>
      </Style.Triggers>
    </Style>
  </ToggleButton.Style>    
</ToggleButton>