В WPF XAML не работает более одного триггера - PullRequest
1 голос
/ 08 января 2020

У меня есть простая кнопка. У меня есть два триггера, каждый из которых затемняет цвет кнопки, когда мышь находится над кнопкой или нажимает кнопку. Сначала он работает, но после нажатия кнопки часть стиля IsMouseOver перестает работать. Только IsPressed тогда работает. Стиль определяется как:

<Style TargetType="Button">
           <Setter Property="OverridesDefaultStyle" Value="True"/>
           <Setter Property="Template">
              <Setter.Value>
                 <ControlTemplate TargetType="Button">
                    <Border
                       Background="{TemplateBinding Background}"
                       BorderBrush="Silver"
                       BorderThickness="0.5"
                       CornerRadius="0">
                       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                       <Trigger Property="IsMouseOver" Value="True">
                          <Trigger.EnterActions>
                             <BeginStoryboard>
                                <Storyboard>
                                   <ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="White"/>
                                </Storyboard>
                             </BeginStoryboard>
                          </Trigger.EnterActions>
                          <Trigger.ExitActions>
                             <BeginStoryboard>
                                <Storyboard>
                                   <ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="#FF272727"/>
                                </Storyboard>
                             </BeginStoryboard>
                          </Trigger.ExitActions>
                       </Trigger>
                                <Trigger Property="IsPressed" Value="True">
                                    <Trigger.EnterActions>
                             <BeginStoryboard>
                                <Storyboard>
                                   <ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="DarkSlateGray"/>
                                </Storyboard>
                             </BeginStoryboard>
                          </Trigger.EnterActions>
                          <Trigger.ExitActions>
                             <BeginStoryboard>
                                <Storyboard>
                                   <ColorAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="#FF272727"/>
                                </Storyboard>
                             </BeginStoryboard>
                          </Trigger.ExitActions>
                       </Trigger>
                    </ControlTemplate.Triggers>
                 </ControlTemplate>
              </Setter.Value>
           </Setter>
        </Style>

И кнопка просто определяется как <Button Margin="100,20,100,20" Background="#FF272727" Foreground="Silver">Write to index</Button>

Я смотрел на некоторые другие ответы, но они используют MultiTrigger, and MultiDataTrigger. Я пробовал те, и они либо не решают проблему, либо усугубляют ее. Я также попытался переключить порядок. Это не решает проблему.

1 Ответ

2 голосов
/ 08 января 2020

Действие «Выход» триггера IsPressed вызывает изменение цвета и переопределение триггера при наведении.

Измените значение «Ком» действия «Выход из IsPressed» на:

To="{x:Null}"

. цвет по умолчанию (тот, что на самой кнопке), и разрешите наведению поменять его снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...