VisualStateManager.VisualStateGroups VisualStateManager.VisualStateGroups VisualStateManager.VisualStateGroups Attached Property

Определение

Возвращает или задает коллекцию объектов VisualStateGroup.Gets or sets a collection of VisualStateGroup objects.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Примеры

В следующем примере создается простой ControlTemplate Button для, который содержит один Grid.The following example creates a simple ControlTemplate for a Button that contains one Grid. VisualStateGroup Он также содержит именованный CommonStatesобъект, который определяет MouseOver состояния Normal и.It also contains a VisualStateGroup named CommonStates, which defines the MouseOver and Normal states. Также имеет значение VisualTransition , которое указывает, что для изменения с зеленого на красный Grid , когда пользователь наводит указатель Buttonмыши на объект, требуется одна половина секунды. VisualStateGroupThe VisualStateGroup also has a VisualTransition that specifies that it takes one half second for the Grid to change from green to red when the user moves the mouse pointer over the 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 коллекцию объектов.Each VisualStateGroup contains a collection of VisualState objects. Объект VisualState содержитStoryboard коллекцию объектов, определяющих изменение внешнего вида элемента управления, когда элемент управления находится в определенном состоянии.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in a certain state. Например, при нажатии кнопки, когда она не нажата, Button может слегка отличаться внешний вид.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Два состояния, которые Button соответствуют определению при нажатии ("Pressed") и когда это не ("Normal").Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal").

Добавление VisualState в элемент управления осуществляется путем VisualStateGroups установки присоединенного свойства элемента управления.You add VisualState to a control by setting the VisualStateGroups attached property on the control. Вы помещаете взаимоисключающие состояния друг VisualStateGroupв друга.You put states that are mutually exclusive to each other in the same VisualStateGroup. Например, CheckBox имеет два VisualStateGroup объекта.For example, the CheckBox has two VisualStateGroup objects. Один из них содержит состояния Normal, MouseOver Pressed,, и Disabled.One contains the states, Normal, MouseOver, Pressed, and Disabled. Другой содержит состояния, Checked UnChecked, и Indeterminate.The other contains the states, Checked, UnChecked, and Indeterminate. MouseOver UnChecked MouseOver Может находиться в состоянии и в то же время, но не может находиться в состоянии и Pressed одновременно. CheckBoxThe CheckBox can be in states MouseOver and UnChecked at the same time, but it cannot be in the MouseOver and Pressed states at the same time.

Хотя объекты можно добавлять VisualState к любому элементу, они особенно полезны для того, чтобы другие могли переопределить визуальное поведение. ControlAlthough you can add VisualState objects to any element, they are a particularly useful way to enable others to redefine the visual behavior of a Control. При создании пользовательского элемента управления, использующего ControlTemplate, можно указать, к TemplateVisualStateAttribute каким состояниям может принадлежать управление, добавив в его определение класса.If you create a custom control that uses a ControlTemplate, you can specify which states that control can be in by adding a TemplateVisualStateAttribute on its class definition. Затем любой пользователь, создающий ControlTemplate новый элемент управления, может VisualState добавлять объекты в шаблон.Then anyone who creates a new ControlTemplate for your control can add VisualState objects to the template. Состояния с одинаковыми System.Windows.TemplateVisualStateAttribute.GroupName принадлежат VisualStateGroupк одному и тому же.States with the same System.Windows.TemplateVisualStateAttribute.GroupName belong in the same VisualStateGroup.

Дополнительные сведения об использовании VisualStateGroup объектов ControlTemplateв см. в разделе Настройка внешнего вида существующего элемента управления путем создания объекта ControlTemplate.For more information about how to use VisualStateGroup objects in a ControlTemplate, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate. Дополнительные сведения о создании элементов управления, использующих VisualStateManager, см. в разделе Создание элемента управления с настраиваемым внешним видом.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance.

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