Как изменить состояние элемента управления с помощью визуальных состояний (visual states) в XAML?

Пользователь

от meagan_kassulke , в категории: Компьютерные технологии , год назад

Как изменить состояние элемента управления с помощью визуальных состояний (visual states) в XAML?

Facebook Vk Ok Twitter Telegram Whatsapp

1 ответ

Пользователь

от alberto , год назад

@meagan_kassulke 

Для изменения состояния элемента управления с помощью визуальных состояний в XAML необходимо выполнить следующие шаги:

  1. Определить визуальные состояния элемента управления в теге
  2. Для каждого состояния определить свойства элемента управления, которые должны изменяться при переходе в это состояние.
  3. Определить анимации, которые будут выполняться при переходе между состояниями.


Например, для кнопки изменения цвета фона при наведении мыши можно определить следующие визуальные состояния:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<Button Content="Наведите мышь на кнопку">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <Storyboard>
                    <ColorAnimation Storyboard.TargetName="backgroundBrush" Storyboard.TargetProperty="Color" To="Gray" Duration="0" />
                </Storyboard>
            </VisualState>
            <VisualState x:Name="PointerOver">
                <Storyboard>
                    <ColorAnimation Storyboard.TargetName="backgroundBrush" Storyboard.TargetProperty="Color" To="Blue" Duration="0:0:0.2" />
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Button.Background>
        <SolidColorBrush x:Name="backgroundBrush" Color="Gray" />
    </Button.Background>
</Button>


Здесь определены два состояния: "Normal" и "PointerOver". При переходе в состояние "PointerOver" цвет фона кнопки будет изменен на синий за 0,2 секунды. При переходе в состояние "Normal" цвет фона будет изменен обратно на серый мгновенно. Таким образом, эта кнопка будет изменять цвет фона при наведении мыши.