что такое визуальное состояние в wpf?а кто-нибудь знает, как начать понимать и использовать это? - PullRequest
8 голосов
/ 12 апреля 2011

что такое визуальное состояние в wpf?и кто-нибудь знает, как начать понимать и использовать это?

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

thx да

Ответы [ 2 ]

8 голосов
/ 12 апреля 2011

Визуальные состояния в WPF - это управление внешним видом элементов управления.Состояние элемента управления может изменяться, а затем иметь вид изменения элемента управления в ответ на изменение состояния.Например, если элемент управления нажат / отключен / находится в фокусе, он может иметь различный вид для каждого состояния.Существует пример того, как использовать механизм триггера WPF для изменения внешнего вида элементов управления здесь ;это даст вам некоторую общую информацию об изменении внешнего вида элементов управления.Здесь есть хорошее общее руководство по WPF здесь и хорошее объяснение Visual State здесь .Для более продвинутого использования есть информация от Microsoft о Visual State Manager здесь

2 голосов
/ 30 марта 2017

Визуальное состояние используется для изменения внешнего вида элемента управления wpf в различных состояниях элемента управления, например, в случае переключателя, он может отображаться по-разному, когда фокус, при нажатии или отключении,

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

  1. CommonStates
  2. CheckStates
  3. FocusStates

Чаще всего используются визуальные состояния:

  1. MouseOver
  2. Нажатие
  3. Отключено
  4. Проверено
  5. Не проверено
  6. Не определено
  7. Сфокусировано
  8. Не сфокусировано
  9. PointerFocused

Приведен пример визуального состояния, используемого в стиле переключателя

<Style TargetType="RadioButton">
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="Foreground"
            Value="{DynamicResource BlackBrush}" />
    <Setter Property="Padding"
            Value="1,4,0,0" />
    <Setter Property="HorizontalAlignment"
            Value="Stretch" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="RadioButton">
                <Border Background="{TemplateBinding Background}">
                    <vsm:VisualStateManager.VisualStateGroups>
                        <vsm:VisualStateGroup x:Name="CommonStates">
                            <vsm:VisualState x:Name="Normal" >
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
                                                                   Storyboard.TargetProperty="Stroke">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{DynamicResource HpGray13Brush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="MouseOver">
                                <Storyboard>

                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
                                                                   Storyboard.TargetProperty="Stroke">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{DynamicResource HpGray15Brush}" />
                                    </ObjectAnimationUsingKeyFrames>

                                </Storyboard>
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="Pressed">
                                <Storyboard>

                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
                                                                   Storyboard.TargetProperty="Stroke">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{DynamicResource GreenBrush}" />
                                    </ObjectAnimationUsingKeyFrames>

                                </Storyboard>
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="Disabled">
                                <Storyboard>

                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
                                                                   Storyboard.TargetProperty="Stroke">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{DynamicResource HpGray1Brush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph"
                                                                   Storyboard.TargetProperty="Fill">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{DynamicResource Gray1Brush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </vsm:VisualState>
                        </vsm:VisualStateGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...