VisualStateManager.VisualStateGroups Присоединенное свойство

Определение

Возвращает или задает коллекцию VisualStateGroup объектов.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Примеры

В следующем примере создается простой ControlTemplate объект, Button содержащий один Grid. Он также содержит именованный VisualStateGroupобъект, определяющий CommonStatesMouseOver и Normal состояния. Также VisualStateGroup имеется значение VisualTransition , указывающее, что для изменения с зеленого на красный цвет требуется одна половина секунды Grid , когда пользователь перемещает указатель мыши на указатель Buttonмыши.

<ControlTemplate TargetType="Button">
  <Grid >
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">

        <VisualStateGroup.Transitions>

          <!--Take one half second to trasition to the MouseOver state.-->
          <VisualTransition To="MouseOver" 
            GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>

        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            mouse is over the button.-->
        <VisualState x:Name="MouseOver">
          <Storyboard>
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
              Storyboard.TargetProperty="Color" To="Red" />
          </Storyboard>
        </VisualState>
      </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Grid.Background>
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
    </Grid.Background>
  </Grid>
</ControlTemplate>

Комментарии

Каждый VisualStateGroup содержит коллекцию VisualState объектов. A VisualState содержит коллекцию Storyboard объектов, которые указывают, как внешний вид элемента управления изменяется, когда элемент управления находится в определенном состоянии. Например, Button может быть немного отличается внешний вид при нажатии, чем при нажатии. Два состояния, Button которые определяются, когда она нажимается ("Pressed") и когда она не ("Normal").

Вы добавляете VisualState в элемент управления, задав присоединенное VisualStateGroups свойство элемента управления. Вы ставите состояния, которые взаимоисключают друг друга в одном и том же VisualStateGroup. Например, у него CheckBox есть два VisualStateGroup объекта. Один содержит состояния, Normal, MouseOver, Pressedи Disabled. Другой содержит состояния, Checked, UnCheckedи Indeterminate. Это CheckBox может быть в состояниях MouseOver и UnChecked одновременно, но оно не может находиться в MouseOver и Pressed то же время.

Несмотря на то что вы можете добавлять VisualState объекты в любой элемент, они особенно полезны для того, чтобы другие могли переопределить визуальное поведение Controlэлемента. При создании пользовательского элемента управления, использующего объект ControlTemplate, можно указать, какие состояния можно включить, добавив TemplateVisualStateAttribute его определение класса. Затем любой пользователь, создающий новый ControlTemplate элемент управления, может добавлять VisualState объекты в шаблон. Государства с одинаковыми относятся к одному и тому же System.Windows.TemplateVisualStateAttribute.GroupNameVisualStateGroup.

Дополнительные сведения об использовании VisualStateGroup объектов в элементе ControlTemplateуправления см. в статье "Создание шаблона для элемента управления". Дополнительные сведения о создании элементов управления, использующих этот VisualStateManagerэлемент управления, см. в разделе "Создание элемента управления с настраиваемым внешним видом".

Применяется к