Бөлісу құралы:


VisualStateManager Класс

Определение

Управляет состояниями и логикой перехода между состояниями для элементов управления.

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 свойство. В примере определяются MouseOver объекты и NormalVisualState объекты в объекте CommonStatesVisualStateGroup. Когда пользователь перемещает указатель мыши на указатель Rectangleмыши, он изменяется с красного на зеленый более одной половины секунды. Когда пользователь перемещает мышь от прямоугольника, Grid немедленно изменяется на красный. Обратите внимание, что Normal состояние не определяет Storyboard. Не Storyboard требуется, MouseOverStoryboard так как при Rectangle переходе из MouseOver состояния в состояние Normal он останавливается, а Color свойство SolidColorBrush для возврата возвращается красным цветом.

<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 метод для перехода между состояниями. Если прямоугольник в предыдущем примере был частьюControlTemplateGoToState, пример должен вызвать метод.

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

Кроме VisualStateManager того, можно указать, когда элемент управления входит в определенное состояние. Метод, который необходимо вызвать для изменения состояний, зависит от вашего сценария. При создании элемента управления, использующего VisualStateManager егоControlTemplateGoToState, вызовите метод. Дополнительные сведения о создании элементов управления, использующих этот VisualStateManagerэлемент управления, см. в разделе "Создание элемента управления с настраиваемым внешним видом". Если вы используете VisualStateManager внешний ControlTemplate элемент (например, если используется VisualStateManager в одном UserControl элементе или в одном элементе), вызовите GoToElementState метод. В любом случае VisualStateManager выполняет логику, необходимую для соответствующего запуска и остановки раскадровки, связанных с соответствующим состоянием. Например, предположим, что элемент управления определяет состояния, State1 и State2каждый из которых имеет раскадровку, связанную с ней. Если элемент управления находится и вы передаете State2GoToStateState1 или GoToElementState, VisualStateManager запускает раскадровки в State2 и останавливает раскадровку в State1.

Элементы управления, включенные в Windows Presentation Foundation (WPF), используются VisualStateManager для изменения визуальных состояний. При создании элемента управления, включенного ControlTemplate в WPF, можно добавить объекты в элемент управления, чтобы указать VisualState внешний вид элемента управления ControlTemplate в определенном состоянии. Чтобы найти имена визуальных состояний для элементов управления, включенных в WPF, см. статью "Стили элементов управления" и "Шаблоны". Логика элемента управления обрабатывает переход между состояниями, поэтому вам не нужно ничего, кроме определения VisualState объектов в новом ControlTemplate. Дополнительные сведения о создании шаблонов элементов управления для существующих элементов управления см. в статье "Создание шаблона для элемента управления".

Если вы хотите реализовать собственную логику для перехода между состояниями, необходимо наследовать от VisualStateManagerметода, переопределить GoToStateCore метод и задать VisualStateManager.CustomVisualStateManager присоединенное свойство в элементе управления, использующего пользовательскую логику.

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

Имя Описание
VisualStateManager()

Инициализирует новый экземпляр класса VisualStateManager.

Поля

Имя Описание
CustomVisualStateManagerProperty

Определяет CustomVisualStateManager свойство зависимостей.

VisualStateGroupsProperty

Определяет VisualStateGroups свойство зависимостей.

Свойства

Имя Описание
DependencyObjectType

Возвращает объект DependencyObjectType , который упаковывает тип СРЕДЫ CLR этого экземпляра.

(Унаследовано от DependencyObject)
Dispatcher

Dispatcher Возвращает это DispatcherObject значение, с которым связано.

(Унаследовано от DispatcherObject)
IsSealed

Возвращает значение, указывающее, запечатан ли этот экземпляр (только для чтения).

(Унаследовано от DependencyObject)

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

Имя Описание
CustomVisualStateManager

Возвращает или задает VisualStateManager объект, который переходит между состояниями элемента управления.

VisualStateGroups

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

Методы

Имя Описание
CheckAccess()

Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.

(Унаследовано от DispatcherObject)
ClearValue(DependencyProperty)

Очищает локальное значение свойства. Свойство для очистки указывается идентификатором DependencyProperty .

(Унаследовано от DependencyObject)
ClearValue(DependencyPropertyKey)

Очищает локальное значение свойства только для чтения. Свойство, которое необходимо очистить, задается параметром DependencyPropertyKey.

(Унаследовано от DependencyObject)
CoerceValue(DependencyProperty)

Принуждает значение указанного свойства зависимостей. Это достигается путем вызова любой CoerceValueCallback функции, указанной в метаданных свойств для свойства зависимостей, так как он существует при вызове DependencyObject.

(Унаследовано от DependencyObject)
Equals(Object)

Определяет, эквивалентен ли предоставленный DependencyObject объект текущему DependencyObject.

(Унаследовано от DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Возвращает присоединенное CustomVisualStateManager свойство.

GetHashCode()

Получает хэш-код для этого DependencyObject.

(Унаследовано от DependencyObject)
GetLocalValueEnumerator()

Создает специализированный перечислитель для определения того, какие свойства зависимостей имеют локальные значения для этого DependencyObject.

(Унаследовано от DependencyObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetValue(DependencyProperty)

Возвращает текущее эффективное значение свойства зависимостей для этого экземпляра DependencyObject.

(Унаследовано от DependencyObject)
GetVisualStateGroups(FrameworkElement)

Возвращает присоединенное VisualStateGroups свойство.

GoToElementState(FrameworkElement, String, Boolean)

Перемещает элемент между двумя состояниями. Используйте этот метод для перехода состояний, определенных приложением, а не определенных элементом управления.

GoToState(FrameworkElement, String, Boolean)

Перемещает элемент управления между двумя состояниями. Используйте этот метод для перехода состояний на элемент управления с элементом ControlTemplateуправления.

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

Преобразует элемент управления между состояниями.

InvalidateProperty(DependencyProperty)

Повторно вычисляет эффективное значение для указанного свойства зависимостей.

(Унаследовано от DependencyObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Вызывается при каждом обновлении эффективного значения любого свойства DependencyObject зависимостей. Определенное свойство зависимостей, которое изменилось, сообщается в данных события.

(Унаследовано от DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

CurrentStateChanging Вызывает событие для указанного VisualStateGroup объекта.

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

CurrentStateChanging Вызывает событие для указанного VisualStateGroup объекта.

ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если оно существует.

(Унаследовано от DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Задает значение свойства зависимостей, не изменяя его источник значений.

(Унаследовано от DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Задает присоединенное CustomVisualStateManager свойство.

SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей, указанное его идентификатором свойства зависимостей.

(Унаследовано от DependencyObject)
SetValue(DependencyPropertyKey, Object)

Задает локальное значение свойства зависимостей только для чтения, указанное DependencyPropertyKey идентификатором свойства зависимости.

(Унаследовано от DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Возвращает значение, указывающее, должны ли процессы сериализации сериализовать значение для указанного свойства зависимостей.

(Унаследовано от DependencyObject)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
VerifyAccess()

Принудительно применяет, что вызывающий поток имеет доступ к этому DispatcherObject.

(Унаследовано от DispatcherObject)

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