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 ") в соответствии с набором визуальных состояний элемента управления. Переходы определяются свойством TransitionsVisualStateGroup и обычно определяются в XAML. Большинство шаблонов элементов управления по умолчанию не определяют переходы, и в этом случае переходы между состояниями происходят мгновенно. Изменения старого состояния в шаблоне удаляются, а изменения нового состояния применяются.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

Всегда возвращается null в приложении пакета SDK для приложений windows. Вместо этого используйте 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)

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

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