Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс VisualStateManager

 

Опубликовано: Октябрь 2016

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

Пространство имен:   System.Windows
Сборка:  PresentationFramework (в PresentationFramework.dll)


public class VisualStateManager : DependencyObject

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

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

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

Возвращает DependencyObjectType оболочки CLR типа этого экземпляра. (Наследуется от DependencyObject.)

System_CAPS_pubpropertyDispatcher

Возвращает Dispatcher это DispatcherObject связан.(Наследуется от DispatcherObject.)

System_CAPS_pubpropertyIsSealed

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

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

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

System_CAPS_pubpropertySystem_CAPS_staticVisualStateGroups

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

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

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

System_CAPS_pubmethodClearValue(DependencyProperty)

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

System_CAPS_pubmethodClearValue(DependencyPropertyKey)

Очищает локальное значение доступного только для чтения свойства. Очищаемое свойство задается ключом DependencyPropertyKey.(Наследуется от DependencyObject.)

System_CAPS_pubmethodCoerceValue(DependencyProperty)

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

System_CAPS_pubmethodEquals(Object)

Определяет, является ли предоставленный DependencyObject эквивалентно значению текущего объекта DependencyObject.(Наследуется от DependencyObject.)

System_CAPS_protmethodFinalize()

Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как он будет уничтожен во время сборки мусора.(Наследуется от Object.)

System_CAPS_pubmethodSystem_CAPS_staticGetCustomVisualStateManager(FrameworkElement)

Возвращает CustomVisualStateManager вложенного свойства.

System_CAPS_pubmethodGetHashCode()

Возвращает хэш-код для данного объекта DependencyObject.(Наследуется от DependencyObject.)

System_CAPS_pubmethodGetLocalValueEnumerator()

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

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.(Наследуется от Object.)

System_CAPS_pubmethodGetValue(DependencyProperty)

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

System_CAPS_pubmethodSystem_CAPS_staticGetVisualStateGroups(FrameworkElement)

Возвращает VisualStateManager.VisualStateGroups вложенного свойства.

System_CAPS_pubmethodSystem_CAPS_staticGoToElementState(FrameworkElement, String, Boolean)

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

System_CAPS_pubmethodSystem_CAPS_staticGoToState(FrameworkElement, String, Boolean)

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

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

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

System_CAPS_pubmethodInvalidateProperty(DependencyProperty)

Повторно вычисляет действующее значение для указанного свойства зависимостей(Наследуется от DependencyObject.)

System_CAPS_protmethodMemberwiseClone()

Создает неполную копию текущего объекта Object.(Наследуется от Object.)

System_CAPS_protmethodOnPropertyChanged(DependencyPropertyChangedEventArgs)

Вызывается каждый раз, когда обновляется действительное значение любого свойства зависимостей для данного DependencyObject. Конкретное измененное свойство зависимостей сообщается в данных события.(Наследуется от DependencyObject.)

System_CAPS_protmethodRaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Вызывает CurrentStateChanging событий на указанном VisualStateGroup объекта.

System_CAPS_protmethodRaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Вызывает CurrentStateChanging событий на указанном VisualStateGroup объекта.

System_CAPS_pubmethodReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если оно существует.(Наследуется от DependencyObject.)

System_CAPS_pubmethodSetCurrentValue(DependencyProperty, Object)

Задает значение свойства зависимостей, не изменяя источник значения.(Наследуется от DependencyObject.)

System_CAPS_pubmethodSystem_CAPS_staticSetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Наборы CustomVisualStateManager вложенного свойства.

System_CAPS_pubmethodSetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей, определяемое идентификатором свойства зависимостей.(Наследуется от DependencyObject.)

System_CAPS_pubmethodSetValue(DependencyPropertyKey, Object)

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

System_CAPS_protmethodShouldSerializeProperty(DependencyProperty)

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

System_CAPS_pubmethodToString()

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

System_CAPS_pubmethodVerifyAccess()

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

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

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

System_CAPS_pubfieldSystem_CAPS_staticVisualStateGroupsProperty

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

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

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

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

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

В следующем примере создается Rectangle и добавляет VisualStateGroup с именем CommonStates для VisualStateManager.VisualStatesGroups вложенного свойства. В примере определяется MouseOver и NormalVisualState объекты в CommonStatesVisualStateGroup. При наведении указателя мыши на Rectangle, она меняется от красного на зеленый через пол секунды. Когда пользователь перемещает указатель мыши прямоугольник, Grid немедленно изменения обратно на красный. Обратите внимание, что Normal не определяет состояние Storyboard. Объект Storyboard не является обязательным, поскольку при Rectangle переходит из MouseOver состояние Normal состояние, Storyboard для MouseOver остановлена и 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 метод для перехода между состояниями. Если прямоугольник, в предыдущем примере был частью ControlTemplate, пример пришлось бы вызвать GoToState метод.

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}

.NET Framework
Доступно с 4.0
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0

Любые открытые статические элементы ( Предоставлен общий доступ в Visual Basic) этого типа являются потокобезопасными. Потокобезопасность элементов экземпляров не гарантируется.

Вернуться в начало
Показ: