Поделиться через


VisualTransition Класс

Определение

Представляет визуальное поведение, которое происходит при переходе элемента управления из одного визуального состояния в другое.

/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Storyboard")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class VisualTransition : DependencyObject
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Storyboard")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class VisualTransition : DependencyObject
Public Class VisualTransition
Inherits DependencyObject
<VisualStateGroup>
  <!--one or more Visual State elements in the implicit States collection property -->
  <VisualStateGroup.Transitions>
    <VisualTransition>
      singleStoryboard
    </VisualTransition>
    <!--more transitions as above-->
  </VisualStateGroup.Transitions>
</VisualStateGroup>
Наследование
Object IInspectable DependencyObject VisualTransition
Атрибуты

Примеры

В этом примере создается объект VisualTransition, указывающий, что при перемещении мыши от элемента управления граница элемента управления меняется на синюю, затем на желтую, а затем на черную через 1,5 секунды.

<!--Take one and a half seconds to transition from the
    PointerOver state to the Normal state. 
    Have the SolidColorBrush, BorderBrush, fade to blue, 
    then to yellow, and then to black in that time.-->
<VisualTransition From="PointerOver" To="Normal" 
                      GeneratedDuration="0:0:1.5">
  <Storyboard>
    <ColorAnimationUsingKeyFrames
      Storyboard.TargetProperty="Color"
      Storyboard.TargetName="BorderBrush"
      FillBehavior="HoldEnd" >

      <ColorAnimationUsingKeyFrames.KeyFrames>

        <LinearColorKeyFrame Value="Blue" 
                             KeyTime="0:0:0.5" />
        <LinearColorKeyFrame Value="Yellow" 
                             KeyTime="0:0:1" />
        <LinearColorKeyFrame Value="Black" 
                             KeyTime="0:0:1.5" />

      </ColorAnimationUsingKeyFrames.KeyFrames>
    </ColorAnimationUsingKeyFrames>
  </Storyboard>
</VisualTransition>
<VisualStateGroup x:Name="CommonStates">

  <!--Define the VisualTransitions that can be used when the control
      transitions between VisualStates that are defined in the
      VisualStatGroup.-->
  <VisualStateGroup.Transitions>

    <!--Take one hundredth of a second to transition to the
        Pressed state.-->
    <VisualTransition To="Pressed" 
                          GeneratedDuration="0:0:0.01" />
    
    <!--Take one half second to transition to the PointerOver state.-->
    <VisualTransition To="PointerOver" 
                          GeneratedDuration="0:0:0.5" />

    <!--Take one hundredth of a second to transition from the
        Pressed state to the PointerOver state.-->
    <VisualTransition From="Pressed" To="PointerOver" 
                          GeneratedDuration="0:0:0.01" />

    <!--Take one and a half seconds to transition from the
        PointerOver state to the Normal state. 
        Have the SolidColorBrush, BorderBrush, fade to blue, 
        then to yellow, and then to black in that time.-->
    <VisualTransition From="PointerOver" To="Normal" 
                          GeneratedDuration="0:0:1.5">
      <Storyboard>
        <ColorAnimationUsingKeyFrames
          Storyboard.TargetProperty="Color"
          Storyboard.TargetName="BorderBrush"
          FillBehavior="HoldEnd" >

          <ColorAnimationUsingKeyFrames.KeyFrames>

            <LinearColorKeyFrame Value="Blue" 
                               KeyTime="0:0:0.5" />
            <LinearColorKeyFrame Value="Yellow" 
                               KeyTime="0:0:1" />
            <LinearColorKeyFrame Value="Black" 
                               KeyTime="0:0:1.5" />

          </ColorAnimationUsingKeyFrames.KeyFrames>
        </ColorAnimationUsingKeyFrames>
      </Storyboard>
    </VisualTransition>
  </VisualStateGroup.Transitions>

  <!--The remainder of the VisualStateGroup is the
      same as the previous example.-->

  <VisualState x:Name="Normal" />

  <VisualState x:Name="PointerOver">
    <Storyboard>
      <ColorAnimation Storyboard.TargetName="BorderBrush" 
                    Storyboard.TargetProperty="Color" To="Red" />

    </Storyboard>
  </VisualState>

  <VisualState x:Name="Pressed">
    <Storyboard >
      <ColorAnimation Storyboard.TargetName="BorderBrush" 
                    Storyboard.TargetProperty="Color" To="Transparent"/>
    </Storyboard>
  </VisualState>

  <!--The Disabled state is omitted for brevity.-->

</VisualStateGroup>

Комментарии

VisualTransition это поведение, которое инициирует раскадровки. Эта раскадровка является временная шкала, которая объявляет продолжительность выполнения анимации, переходя между двумя визуальными состояниями. Переход можно определить по-разному для каждой комбинации начального состояния (состояние From ) и конечного состояния (состояние To ) в соответствии с набором визуальных состояний элемента управления. Переходы определяются свойством Transitionsобъекта VisualStateGroup и обычно определяются в XAML. Большинство шаблонов элементов управления по умолчанию не определяют переходы, и в этом случае переходы между состояниями происходят мгновенно. Изменения старого состояния в шаблоне удаляются, а изменения нового состояния применяются.

Ссылается VisualTransition на одно или два именованных визуальных состояния. Значение From ссылается на имя состояния, которое является текущим. Значение To ссылается на имя состояния, которое является новым состоянием, запрошенным вызовом GoToState . Эти имена происходят из строкового значения атрибута x:Name , которое применяется к VisualState как часть его определения в той же группе VisualStateGroup. Значение From или To являются обязательным значением для эффективного объекта VisualTransition. Объект VisualTransition, который не имеет этих значений или использует значения, которые не соответствуют существующим состояниям, ничего не делает.

может VisualTransition ссылаться только на состояние From , только на состояние To или на состояние From и To . Пропуск параметра From или To приравнивается к любому состоянию. VisualStateManager использует логику приоритета, для которой переход применяется при каждом изменении визуальных состояний:

  1. VisualTransition Если существует объект , который ссылается на старое состояние как "От", а новое — на "To", используйте этот переход.
  2. В противном случае, если VisualTransition существует объект , который конкретно ссылается на новое состояние как To , но не указывает От, используйте этот переход.
  3. Наконец, если VisualTransition существует объект , который конкретно ссылается на старое состояние как От , но не указывает На, используйте этот переход.

Если ни одно из описанных выше действий не применяется, переход не выполняется.

При вызове GoToState для изменения визуального состояния элемента управления VisualStateManager выполняет следующие действия:

  • Если объект VisualState , который использовался элементом управления до нового запрошенного визуального состояния, имеет раскадровки, эта раскадровка останавливается.
  • Между этими действиями раскадровка для VisualTransition выполняется, если существует переход, который включает два визуальных состояния, и именованное визуальное состояние, запрошенное GoToState, является допустимым и является новым состоянием.
  • Если свойство VisualState с именем stateName имеет раскадровки, раскадровка начинается.

Может VisualTransition иметь значение Раскадровки , Значение GeneratedDuration или и то, и другое. Но если не VisualTransition имеет ни Storyboard значения, ни GeneratedDuration значения, это VisualTransition ничего не делает с точки зрения анимации, даже если состояния, именованные значениями From и To , участвуют в изменении состояния.

Неявные переходы

Можно определить так, VisualTransition чтобы у него был GeneratedDuration, но у него нет каких-либо конкретных свойств зависимостей, предназначенных для анимирования. Это создает неявный переход. Любое свойство зависимостей, специально предназначенное для анимации в визуальных состояниях From или To и, таким образом, имеет разные значения в изменении состояния, затем использует созданную анимацию перехода. Эта созданная анимация переходит между значением состояния From и значением состояния To такого свойства с помощью интерполяции. Анимация неявного перехода длится в течение времени, указанного в generatedDuration.

Неявные переходы применяются только к свойствам, которые являются значением Double, Color или Point . Иными словами, свойство должно быть возможно для неявной анимации с помощью DoubleAnimation, PointAnimation или ColorAnimation. Если вы хотите создать анимацию перехода для другого значения, например значения, для которого требуется ObjectAnimationUsingKeyFrames, поместите эту анимацию в раскадровку и присвойте анимации значение Duration , которое вы хотите запустить.

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

Анимации перехода

Существует еще один конструктивный шаблон и API для отображения визуальных переходов для приложений на C++ или C#. Эта концепция называется анимацией перехода , а класс, реализующий поведение, является переходом темы или анимацией темы. Вместо объявления переходов между визуальными состояниями одного элемента управления и применения изменений к свойствам частей элемента управления, как в случае с визуальными состояниями, анимация перехода представляет изменения в отношениях между полным элементом пользовательского интерфейса и общим приложением и пользовательским интерфейсом. Например, существует repositionThemeTransition , который можно применять при каждом перемещении элемента пользовательского интерфейса в пространстве координат пользовательского интерфейса контейнера макета. Многие анимации перехода инициируются действием пользователя. Анимация перехода применяется к различным свойствам переходаUIElement и определенным производным классам, а не к VisualStateGroup. Анимации перехода и анимации тем часто встроены в поведение элемента управления по умолчанию.

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

VisualTransition()

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

Свойства

Dispatcher

Всегда возвращает в null приложении Windows App SDK. Вместо этого используйте DispatcherQueue .

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

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

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

Возвращает или задает имя объекта VisualState для перехода.

GeneratedDuration

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

GeneratedEasingFunction

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

Storyboard

Возвращает или задает раскадровки , которая выполняется при переходе.

To

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

Методы

ClearValue(DependencyProperty)

Очищает локальное значение свойства зависимостей.

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

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

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

Возвращает текущее действующее значение свойства зависимостей из DependencyObject.

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

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

(Унаследовано от DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Регистрирует функцию уведомления для прослушивания изменений определенного DependencyProperty в этом экземпляре DependencyObject .

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

Задает локальное значение свойства зависимостей для Объекта DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменениях, которое было ранее зарегистрировано путем вызова Метода RegisterPropertyChangedCallback.

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

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

См. также раздел