VisualStateManager VisualStateManager VisualStateManager VisualStateManager Class

Определение

Управляет состояниями и логикой для переходов между состояниями элементов управления.Manages states and the logic for transitioning between states for controls.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Наследование

Примеры

В следующем примере создается Rectangle и добавляет VisualStateGroup с именем CommonStates для VisualStateManager.VisualStatesGroups вложенного свойства зависимостей.The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. В примере определяется MouseOver и Normal VisualState объекты в CommonStates VisualStateGroup.The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. Когда пользователь наводит указатель мыши Rectangle, он меняется от красного на зеленый через пол секунды.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. Когда пользователь перемещает указатель мыши прямоугольник, Grid немедленно изменений обратно на красный.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Обратите внимание, что Normal не определяет состояние Storyboard.Note that the Normal state does not define a Storyboard. Объект Storyboard не является обязательным, так как при Rectangle переходит из MouseOver состояние Normal состояние, Storyboard для MouseOver остановлена и Color свойство SolidColorBrush возвращает красный цвет.A Storyboard is not required because when the Rectangle transitions from the MouseOver state to the Normal state, the Storyboard for MouseOver is stopped and the Color property for the SolidColorBrush returns to red.

<Rectangle Name="rect" 
           Width="100" Height="100"
           MouseEnter="rect_MouseEvent" 
           MouseLeave="rect_MouseEvent">
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup Name="MouseStates">
      <VisualState Name="MouseEnter">
        <Storyboard>
          <ColorAnimation To="Green" 
                          Storyboard.TargetName="rectBrush" 
                          Storyboard.TargetProperty="Color"/>
        </Storyboard>
      </VisualState>
      <VisualState Name="MouseLeave" />
      <VisualStateGroup.Transitions>
        <VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>

        <VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
          <VisualTransition.GeneratedEasingFunction>
            <ExponentialEase EasingMode="EaseOut" Exponent="10"/>
          </VisualTransition.GeneratedEasingFunction>
        </VisualTransition>

      </VisualStateGroup.Transitions>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectBrush" Color="Red"/>
  </Rectangle.Fill>
</Rectangle>

В следующем примере показан обработчик событий, определенный в предыдущем примере и вызовы GoToElementState метод для перехода между состояниями.The following example shows the event handler that is defined in the previous example and calls the GoToElementState method to transition between states. Если прямоугольник в предыдущем примере был частью ControlTemplate, пример пришлось бы вызвать GoToState метод.If the rectangle in the previous example was part of a ControlTemplate, the example would have to call the GoToState method.

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
    If rect.IsMouseOver Then
        VisualStateManager.GoToElementState(rect, "MouseEnter", True)
    Else
        VisualStateManager.GoToElementState(rect, "MouseLeave", True)
    End If
End Sub

Комментарии

VisualStateManager Позволяет указать состояний элемента управления, внешний вид элемента управления, когда он находится в определенном состоянии, а также при изменении состояния элемента управления.The VisualStateManager enables you to specify states for a control, the appearance of a control when it is in a certain state, and when a control changes states. Например 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.The appearance of a control when it is in a state is defined by a VisualState. Объект VisualState содержит коллекцию Storyboard объектов, указывающих, как меняется внешний вид элемента управления, когда элемент управления находится в этом состоянии.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. Добавление визуальных состояний в элемент управления, задав VisualStateManager.VisualStateGroups присоединенного свойства в элементе управления.You add visual states to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. Каждый VisualStateGroup содержит коллекцию VisualState объекты, которые являются взаимоисключающими.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. То есть элемент управления всегда находится в ровно одно состояние объекта в каждом VisualStateGroup.That is, the control is always in exactly one state of in each VisualStateGroup.

VisualStateManager Также позволяет указать, когда элемент управления переходит в определенном состоянии.The VisualStateManager also enables you to specify when a control enters a specific state. Метод, который следует использовать для изменения состояния зависит от сценария.The method that you should call to change states depends on your scenario. При создании элемента управления, который использует VisualStateManager в его ControlTemplate, вызовите GoToState метод.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. Дополнительные сведения о создании элементов управления, использующих VisualStateManager, см. в разделе Создание элемента управления с настраиваемым внешним видом.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. Если вы используете VisualStateManager за пределами ControlTemplate (например, в том случае, если вы используете VisualStateManager в UserControl или в одном элементе), вызовите GoToElementState метод.If you use the VisualStateManager outside of a ControlTemplate (for example, if you use a VisualStateManager in a UserControl or in a single element), call the GoToElementState method. В любом случае VisualStateManager выполняет действия, необходимые для корректного запуска и остановки раскадровок, которые связаны с соответствующим состоянием.In either case, the VisualStateManager performs the logic that is required to appropriately start and stop the storyboards that are associated with the involved state. Например, предположим, что элемент управления определяет состояния, State1 и State2, каждый из которых имеет раскадровки, связанные с ней.For example, suppose that a control defines the states, State1 and State2, each of which has a storyboard associated with it. Если элемент управления в State1 и передать State2 для GoToState или GoToElementState, VisualStateManager запускает раскадровку State2 и останавливает раскадровку в State1.If the control is in State1 and you pass State2 to GoToState or GoToElementState, the VisualStateManager starts the storyboard in State2 and stops the storyboard in State1.

Элементы управления, которые входят в состав Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) использовать VisualStateManager Изменение визуальных состояний.Controls that are included with Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) use the VisualStateManager to change visual states. При создании ControlTemplate для элемента управления, который входит в состав WPFWPF, вы можете добавить VisualState объекты к элементу управления ControlTemplate для указания внешнего вида элемента управления в определенном состоянии.When you create a ControlTemplate for a control that is included with WPFWPF, you can add VisualState objects to the control's ControlTemplate to specify the control's appearance in a certain state. Чтобы найти имена визуальные состояния элементов управления, которые входят в состав WPFWPF, см. в разделе управления стили и шаблоны.To find the names of the visual states for the controls that are included with WPFWPF, see Control Styles and Templates. Определение переходов между состояниями, поэтому не нужно ничего делать не обрабатывает логики элемента управления VisualState объектов в новом ControlTemplate.The control's logic handles transitioning between states, so you do not need to do anything other than define the VisualState objects in the new ControlTemplate. Дополнительные сведения о создании шаблонов для существующих элементов управления см. в разделе Настройка внешнего вида существующего элемента управления путем создания объекта ControlTemplate.For more information about how to create control templates for existing controls, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate.

Если вы хотите реализовать собственную логику для переходов между состояниями, необходимо наследовать от VisualStateManager, переопределить GoToStateCore метод и набор VisualStateManager.CustomVisualStateManager присоединенного свойства в элемент управления, который использует пользовательскую логику.If you want to implement your own logic for transitioning between states, you must inherit from VisualStateManager, override the GoToStateCore method, and set the VisualStateManager.CustomVisualStateManager attached property on the control that uses the custom logic.

Конструкторы

VisualStateManager() VisualStateManager() VisualStateManager() VisualStateManager()

Инициализирует новый экземпляр класса VisualStateManager.Initializes a new instance of the VisualStateManager class.

Поля

CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty

Идентифицирует свойство зависимостей CustomVisualStateManager.Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty

Идентифицирует свойство зависимостей VisualStateGroups.Identifies the VisualStateGroups dependency property.

Присоединенные свойства

CustomVisualStateManager CustomVisualStateManager CustomVisualStateManager CustomVisualStateManager

Получает или задает объект VisualStateManager, который осуществляет переход между состояниями элемента управления.Gets or sets the VisualStateManager object that transitions between the states of a control.

VisualStateGroups VisualStateGroups VisualStateGroups VisualStateGroups

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

Методы

CheckAccess() CheckAccess() CheckAccess() CheckAccess()

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)
ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty)

Очищает локальное значение свойства.Clears the local value of a property. Очищаемое свойство задается идентификатором DependencyProperty.The property to be cleared is specified by a DependencyProperty identifier.

(Inherited from DependencyObject)
ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey)

Очищает локальное значение свойства, доступного только для чтения.Clears the local value of a read-only property. Очищаемое свойство задается объектом DependencyPropertyKey.The property to be cleared is specified by a DependencyPropertyKey.

(Inherited from DependencyObject)
CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) CoerceValue(DependencyProperty)

Приводит значение указанного свойства зависимостей.Coerces the value of the specified dependency property. Это осуществляется путем вызова какой-либо функции CoerceValueCallback, указанной в метаданных свойства зависимостей, которое существует в вызывающем объекте DependencyObject.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Inherited from DependencyObject)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, является ли указанный DependencyObject эквивалентом текущего DependencyObject.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Inherited from DependencyObject)
GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement)

Получает вложенное свойство CustomVisualStateManager.Gets the CustomVisualStateManager attached property.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Получает хэш-код для данного объекта DependencyObject.Gets a hash code for this DependencyObject.

(Inherited from DependencyObject)
GetLocalValueEnumerator() GetLocalValueEnumerator() GetLocalValueEnumerator() GetLocalValueEnumerator()

Создает специализированный перечислитель для определения свойств зависимостей, которые локально установили значения для данного DependencyObject.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Inherited from DependencyObject)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty)

Возвращает текущее действующее значение свойства зависимостей в этом экземпляре DependencyObject.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Inherited from DependencyObject)
GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement)

Получает вложенное свойство VisualStateGroups.Gets the VisualStateGroups attached property.

GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean)

Переводит элемент из одного из двух состояний в другое.Transitions the element between two states. Этот метод используется для смены состояний, определенных приложением, а не определенных элементом управления.Use this method to transition states that are defined by an application, rather than defined by a control.

GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean)

Переводит элемент управления из одного из двух состояний в другое.Transitions the control between two states. Этот метод используется для смены состояний элемента управления, содержащего объект ControlTemplate.Use this method to transition states on control that has a ControlTemplate.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

Переводит элемент управления из одного состояния в другое.Transitions a control between states.

InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty)

Повторно вычисляет действующее значение для указанного свойства зависимостейRe-evaluates the effective value for the specified dependency property

(Inherited from DependencyObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs)

Вызывается каждый раз, когда обновляется действительное значение любого свойства зависимостей для данного DependencyObject.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. Конкретное свойство зависимости, которое изменилось, сообщается в данных события.The specific dependency property that changed is reported in the event data.

(Inherited from DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Порождает событие CurrentStateChanging на заданном объекте VisualStateGroup.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Порождает событие CurrentStateChanging на заданном объекте VisualStateGroup.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если таковое существует.Returns the local value of a dependency property, if it exists.

(Inherited from DependencyObject)
SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object)

Задает значение свойства зависимостей, не меняя источник значения.Sets the value of a dependency property without changing its value source.

(Inherited from DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Задает присоединенное свойство CustomVisualStateManager.Sets the CustomVisualStateManager attached property.

SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей, указанного идентификатором этого свойства.Sets the local value of a dependency property, specified by its dependency property identifier.

(Inherited from DependencyObject)
SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object)

Задает локальное значение свойства зависимости только для чтения, определяемое идентификатором DependencyPropertyKey свойства зависимостей.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Inherited from DependencyObject)
ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty)

Возвращает значение, которое указывает, следует ли процессам сериализации выполнять сериализацию значения для предоставленного свойства зависимостей.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Inherited from DependencyObject)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
VerifyAccess() VerifyAccess() VerifyAccess() VerifyAccess()

Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)

Свойства

DependencyObjectType DependencyObjectType DependencyObjectType DependencyObjectType

Возвращает DependencyObjectType, который создает обертку для типа CLRCLR данного экземпляра.Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(Inherited from DependencyObject)
Dispatcher Dispatcher Dispatcher Dispatcher

Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Inherited from DispatcherObject)
IsSealed IsSealed IsSealed IsSealed

Получает значение, указывающее, является ли этот экземпляр в данный момент запечатанным (доступным только для чтения).Gets a value that indicates whether this instance is currently sealed (read-only).

(Inherited from DependencyObject)

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