Постоянное изменение стиля в XAML

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

У меня есть простой стиль, настроенный для сетки:

  <Style TargetType="Grid" x:Key="Block">                  
 <Setter Property="Background" Value="#363636" />      
    <Style.Triggers>

        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="#555555" />
        </Trigger>

    </Style.Triggers>
</Style>
  

Таким образом, сетка возвращается к своему обычному цвету фона, когда мышь уходит. Но я стремлюсь к тому, чтобы цвет фона сетки постоянно оставался на # 555555 после того, как мышь покинет сетку. Могу ли я сделать это с помощью XAML или это нужно делать на C #?

Комментарии:

1. Анимация имеет более высокий приоритет, поэтому вы должны идти этим путем.

Ответ №1:

Вы можете сделать это, используя EventTrigger вместо обычного.

В следующем примере я проиллюстрирую, как это делается:

 <Grid Background="#363636">
        <Grid.Resources>
            <Storyboard x:Key="OnMouseEnter">
                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background.Color" >
                    <DiscreteColorKeyFrame KeyTime="0" Value="#555555"></DiscreteColorKeyFrame>
                </ColorAnimationUsingKeyFrames>
            </Storyboard>
        </Grid.Resources>
        <Grid.Triggers>
            <EventTrigger RoutedEvent="UIElement.MouseEnter">
                <BeginStoryboard Storyboard="{StaticResource OnMouseEnter}"/>
            </EventTrigger>
        </Grid.Triggers>
</Grid>
  

Это может дать вам представление о том, как это можно сделать в чистом XAML.

Комментарии:

1. спасибо, я посмотрю и дам вам знать, как это работает!