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 объекта . Один содержит состояния , Normal
MouseOver
, Pressed
и Disabled
. Другой содержит состояния , Checked
UnChecked
и Indeterminate
. Может CheckBox находиться в состояниях MouseOver
и UnChecked
одновременно, но не может одновременно находиться в MouseOver
состояниях и Pressed
.
Хотя можно добавить VisualState объекты в любой элемент, они особенно полезны, чтобы другие могли переопределить визуальное Controlповедение объекта . При создании пользовательского элемента управления, использующего ControlTemplate, можно указать, в каких состояниях этот элемент управления может находиться, добавив в TemplateVisualStateAttribute определение класса . Затем любой пользователь, создающий новый ControlTemplate объект для вашего элемента управления, может добавить VisualState объекты в шаблон. Состояния с одинаковыми System.Windows.TemplateVisualStateAttribute.GroupName относятся к одному и тому же VisualStateGroup.
Дополнительные сведения об использовании VisualStateGroup объектов в см. в ControlTemplateразделе Настройка внешнего вида существующего элемента управления путем создания элемента управленияTemplate. Дополнительные сведения о создании элементов управления, использующих , см. в VisualStateManagerразделе Создание элемента управления с настраиваемым внешним видом.