Bahasa

VisualTransition Kelas

Definisi

Mewakili perilaku visual yang terjadi saat kontrol beralih dari satu status visual ke status visual lainnya.

/// [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>
Warisan
Object IInspectable DependencyObject VisualTransition
Atribut

Contoh

Contoh ini membuat VisualTransition yang menentukan bahwa ketika pengguna memindahkan mouse menjauh dari kontrol, batas kontrol berubah menjadi biru, lalu menjadi kuning, lalu menjadi hitam dalam 1,5 detik.

<!--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>

Keterangan

VisualTransition adalah perilaku yang memulai Storyboard. Storyboard ini adalah garis waktu yang mendeklarasikan durasi bahwa animasi yang beralih antara dua status visual akan berjalan. Transisi dapat didefinisikan secara berbeda untuk setiap kombinasi status awal (status Dari ) dan status akhir ( status Kepada ) seperti yang didefinisikan oleh sekumpulan status visual kontrol Anda. Transisi didefinisikan oleh properti TransisiVisualStateGroup dan biasanya ditentukan dalam XAML. Sebagian besar templat kontrol default tidak menentukan transisi, dan dalam hal ini transisi antar status terjadi secara instan. Modifikasi status lama ke templat dihapus, dan modifikasi status baru diterapkan.

Referensi VisualTransition baik satu atau dua status visual bernama. Nilai Dari mereferensikan nama status yang merupakan status saat ini. Nilai Kepada mereferensikan nama status yang merupakan status baru yang diminta oleh panggilan GoToState . Nama-nama ini berasal dari nilai string atribut x:Name yang diterapkan ke VisualState sebagai bagian dari definisinya dalam VisualStateGroup yang sama. Dari atauKe adalah nilai yang diperlukan untuk VisualTransition yang efektif, VisualTransition yang tidak memiliki salah satu dari nilai ini atau menggunakan nilai yang tidak cocok dengan status yang ada tidak melakukan apa pun.

VisualTransition Dapat mereferensikan hanya status Dari, hanya status Ke, atau status Dari dan Ke. Menghilangkan dari atau Untuk sama dengan status apa pun. VisualStateManager menggunakan logika prioritas yang transisinya diterapkan setiap kali status visual berubah:

  1. VisualTransition Jika ada yang secara khusus mereferensikan status lama sebagai Dari dan status baru sebagai Kepada, gunakan transisi tersebut.
  2. Jika tidak, jika VisualTransition ada yang secara khusus mereferensikan status baru sebagai Kepada tetapi tidak menentukan Dari, gunakan transisi tersebut.
  3. Terakhir, jika VisualTransition ada yang secara khusus mereferensikan status lama sebagai Dari tetapi tidak menentukan Kepada, gunakan transisi tersebut.

Jika tidak ada hal di atas yang berlaku, tidak ada transisi yang berjalan.

Saat Anda memanggil GoToState untuk mengubah status visual kontrol, VisualStateManager melakukan tindakan ini:

  • Jika VisualState yang digunakan kontrol sebelum status visual yang baru diminta memiliki Storyboard, papan cerita tersebut akan berhenti.
  • Di antara tindakan ini, Storyboard untuk VisualTransition eksekusi, jika transisi yang melibatkan dua status visual ada, dan status visual bernama yang diminta oleh GoToState valid dan merupakan status baru.
  • Jika VisualState seperti yang dinamai oleh stateName memiliki Storyboard, papan cerita dimulai.

VisualTransition Dapat memiliki nilai Storyboard, nilai GeneratedDuration, atau keduanya. Tetapi jika tidak VisualTransition memiliki Storyboard nilai atau GeneratedDuration nilai, itu VisualTransition tidak melakukan apa pun dalam hal animasi, bahkan jika status yang dinamai oleh nilai Dari dan Ke terlibat dalam perubahan status.

Transisi implisit

Anda dapat menentukan VisualTransition sedih bahwa ia memiliki GeneratedDuration, tetapi tidak memiliki properti dependensi tertentu yang ditargetkan dan dianimasikan. Ini membuat transisi implisit. Properti dependensi apa pun yang secara khusus ditargetkan untuk animasi baik dalam status visual Dari atau Ke dan dengan demikian memiliki nilai yang berbeda di seluruh perubahan status kemudian menggunakan animasi transisi yang dihasilkan. Ini menghasilkan transisi animasi antara nilai Status dari dan nilai Status ke properti tersebut menggunakan interpolasi. Animasi transisi implisit berlangsung selama waktu yang dinyatakan oleh GeneratedDuration.

Transisi implisit hanya berlaku untuk properti yang merupakan nilai Ganda, Warna , atau Titik . Dengan kata lain properti harus dimungkinkan untuk menganimasikan secara implisit menggunakan DoubleAnimation, PointAnimation atau ColorAnimation. Jika Anda ingin membuat animasi transisi pada beberapa nilai lain, misalnya nilai yang memerlukan ObjectAnimationUsingKeyFrames, letakkan animasi tersebut di Papan Cerita dan beri animasi Durasi yang Anda inginkan untuk dijalankan.

Secara default, animasi transisi implisit menggunakan interpolasi linier untuk menganimasikan nilai melalui GeneratedDuration. Anda dapat mengubah interpolasi linier ke perilaku interpolasi pilihan Anda dengan mengatur GeneratedEasingFunction serta GeneratedDuration pada VisualTransition.

Animasi transisi

Ada pola desain dan API lain untuk menampilkan transisi visual untuk aplikasi menggunakan C++ atau C#. Konsep ini disebut animasi transisi dan kelas yang mengimplementasikan perilaku adalah transisi tema atau animasi tema. Daripada mendeklarasikan transisi antara status visual kontrol yang sama dan menerapkan perubahan pada properti bagian kontrol seperti yang Anda lakukan dengan status visual, animasi transisi mewakili perubahan dalam hubungan antara elemen UI lengkap dan aplikasi dan UI keseluruhan. Misalnya, ada RepositionThemeTransition yang dapat diterapkan setiap kali elemen UI dipindahkan di ruang koordinat UI kontainer tata letaknya. Banyak animasi transisi dimulai oleh tindakan pengguna. Animasi transisi berlaku untuk berbagai properti TransisiUIElement dan kelas turunan tertentu, bukan ke VisualStateGroup. Animasi transisi dan animasi tema sering kali bawaan ke perilaku default kontrol.

Konstruktor

Nama Deskripsi
VisualTransition()

Menginisialisasi instans baru kelas VisualTransition .

Properti

Nama Deskripsi
Dispatcher

Selalu kembali null di aplikasi SDK Aplikasi Windows. Gunakan DispatcherQueue sebagai gantinya .

(Diperoleh dari DependencyObject)
DispatcherQueue

DispatcherQueue Mendapatkan bahwa objek ini dikaitkan dengan. mewakili DispatcherQueue fasilitas yang dapat mengakses DependencyObject pada utas UI bahkan jika kode dimulai oleh utas non-UI.

(Diperoleh dari DependencyObject)
From

Mendapatkan atau mengatur nama VisualState ke transisi.

GeneratedDuration

Mendapatkan atau mengatur jumlah waktu yang diperlukan untuk berpindah dari satu status ke status lain, dan waktu ketika animasi transisi implisit harus berjalan sebagai bagian dari perilaku transisi.

GeneratedEasingFunction

Mendapatkan atau mengatur fungsi pengurangan yang diterapkan ke animasi yang dihasilkan.

Storyboard

Mendapatkan atau mengatur Storyboard yang berjalan saat transisi terjadi.

To

Mendapatkan atau mengatur nama VisualState ke transisi.

Metode

Nama Deskripsi
ClearValue(DependencyProperty)

Menghapus nilai lokal properti dependensi.

(Diperoleh dari DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Mengembalikan nilai dasar apa pun yang ditetapkan untuk properti dependensi, yang akan berlaku dalam kasus di mana animasi tidak aktif.

(Diperoleh dari DependencyObject)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini dari DependencyObject.

(Diperoleh dari DependencyObject)
ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika nilai lokal diatur.

(Diperoleh dari DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Mendaftarkan fungsi pemberitahuan untuk mendengarkan perubahan pada DependencyProperty tertentu pada instans DependencyObject ini.

(Diperoleh dari DependencyObject)
SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi pada DependencyObject.

(Diperoleh dari DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Membatalkan pemberitahuan perubahan yang sebelumnya terdaftar dengan memanggil RegisterPropertyChangedCallback.

(Diperoleh dari DependencyObject)

Berlaku untuk

Lihat juga