XAML + 很棒:触发时更改样式

XAML + Awesome: change style on trigger

寻找解决方案以通过 trgger 改变很棒的前景 属性。 在按钮上使用很棒的图标,当按钮被禁用时我需要更改前景。 XAML:

    <Window.Resources>
        <Style x:Key="serverButtons" TargetType="{x:Type Button}">
            <Setter Property="Width" Value="24" />
            <Setter Property="HorizontalAlignment" Value="Left" />
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="True">
                    <Setter Property="{foreground_of_ImageAwesome}"  Value="#404040"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="{foreground_of_ImageAwesome}"  Value="DarkGray"/>
                </Trigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="serverBtnIcon" TargetType="{x:Type fa:ImageAwesome}">
            <Setter Property="Height" Value="14" />
            <Setter Property="Width" Value="14" />
            <Setter Property="Margin" Value="3" />
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="Foreground" Value="#404040" />
        </Style>
    </Window.Resources>

.....

            <StackPanel x:Name="panel1" Grid.Row="1" Orientation="Horizontal">
                <Button x:Name="bntAddServer" Style="{StaticResource serverButtons}" Margin="5,0,5,5" ToolTip="Add new server">
                    <fa:ImageAwesome Icon="Plus" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>
                <Button x:Name="btnEditServer" Style="{StaticResource serverButtons}" Margin="0,0,5,5" ToolTip="Edit selected server">
                    <fa:ImageAwesome Icon="Pencil" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>
                <Button x:Name="btnDuplicateServer" Style="{StaticResource serverButtons}" Margin="0,0,5,5" ToolTip="Duplicate selected server">
                    <fa:ImageAwesome Icon="Copy" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>
                <Button x:Name="btnUpServer" Style="{StaticResource serverButtons}" Margin="11,0,5,5" ToolTip="Shift up selected server" IsEnabled="False">
                    <fa:ImageAwesome Icon="ArrowUp" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>
                <Button x:Name="btnDownServer" Style="{StaticResource serverButtons}" Margin="0,0,5,5" ToolTip="Shift down selected server">
                    <fa:ImageAwesome Icon="ArrowDown" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>
                <Button x:Name="btnDeleteServer" Style="{StaticResource serverButtons}" Margin="10,0,0,5" ToolTip="Delete selected server">
                    <fa:ImageAwesome Icon="Minus" Style="{StaticResource serverBtnIcon}"></fa:ImageAwesome>
                </Button>

请帮助找到如何通过按钮触发器更改前景超赞图标的解决方案....

您可能希望通过覆盖与您要更改的颜色相匹配的键来覆盖其不同状态的颜色。

您的代码中的问题是触发器位于父项上,但您在下面的样式中设置了颜色,这将优先于容器样式中提供的颜色。 Here is a similar problem 如果我没记错的话,你不需要在内容上设置颜色,但是按钮没问题:它将继承到内容。

还有一些其他主题想要实现相同的目标 MSDN 上的文档提供了如何更改按钮视觉状态的示例 here