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

Определение

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

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Примеры

В следующем примере создается простой ControlTemplate объект для , Button содержащий один Grid. Он также содержит VisualStateGroup с именем CommonStates, который определяет MouseOver состояния и 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 объектов . Содержит VisualState коллекцию Storyboard объектов , которые указывают, как изменяется внешний вид элемента управления, когда элемент управления находится в определенном состоянии. Например, Button при нажатии может иметь немного другой вид, чем при нажатом. Два состояния, которые Button определяет , соответствуют времени нажатия ("Pressed"), а когда это не ("Normal").

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

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

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

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