XAML + Awesome: изменить стиль на триггере - PullRequest
0 голосов
/ 16 апреля 2020

Ищет решение для изменения удивительного свойства переднего плана с помощью 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>

Пожалуйста, помогите найти решение, как изменить внушительный значок на переднем плане с помощью кнопки триггера ....

1 Ответ

0 голосов
/ 17 апреля 2020

Возможно, вы захотите переопределить цвет его различных состояний, переопределив ключ, соответствующий цвету, который вы хотите изменить.

Проблема в вашем коде состоит в том, что триггер размещается на родительском элементе, но вы устанавливаете цвет на стиль ниже, который будет иметь приоритет над цветом, указанным в стиле контейнера. Вот аналогичная проблема Если я хорошо помню, вам не нужно устанавливать цвет содержимого, но кнопка в порядке: она будет унаследована от содержимого.

Есть некоторые другие темы, которые хотят достичь той же цели здесь Документация по msdn предоставляет пример того, как изменить визуальные состояния кнопки здесь

...