Share via


VisualStateManager Kelas

Definisi

Mengelola status dan logika untuk transisi antar status untuk kontrol.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Warisan

Contoh

Contoh berikut membuat Rectangle dan menambahkan VisualStateGroup bernama CommonStates ke VisualStateManager.VisualStatesGroups properti terlampir. Contoh mendefinisikan MouseOver objek dan NormalVisualState di CommonStatesVisualStateGroup. Ketika pengguna memindahkan penunjuk mouse ke Rectangleatas , itu berubah dari merah ke hijau selama satu setengah detik. Ketika pengguna memindahkan mouse menjauh dari persegi panjang, segera Grid berubah kembali menjadi merah. Perhatikan bahwa status Normal tidak menentukan Storyboard. Storyboard tidak diperlukan karena ketika Rectangle transisi dari MouseOver status ke Normal status, Storyboard untuk MouseOver dihentikan dan Color properti untuk SolidColorBrush kembali ke merah.

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

Contoh berikut menunjukkan penanganan aktivitas yang ditentukan dalam contoh sebelumnya dan memanggil GoToElementState metode untuk transisi antar status. Jika persegi panjang dalam contoh sebelumnya adalah bagian ControlTemplatedari , contohnya harus memanggil GoToState metode .

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

Keterangan

memungkinkan VisualStateManager Anda menentukan status untuk kontrol, tampilan kontrol saat berada dalam status tertentu, dan ketika kontrol berubah status. Misalnya, mungkin memiliki penampilan yang Button sedikit berbeda ketika ditekan daripada ketika tidak ditekan. Dua menyatakan bahwa Button definisi sesuai dengan kapan ditekan ("Pressed") dan ketika tidak ("Normal"). Tampilan kontrol ketika berada dalam keadaan didefinisikan oleh VisualState. VisualState berisi kumpulan Storyboard objek yang menentukan bagaimana tampilan kontrol berubah saat kontrol berada dalam status tersebut. Anda menambahkan status visual ke kontrol dengan mengatur VisualStateManager.VisualStateGroups properti terlampir pada kontrol. Masing-masing VisualStateGroup berisi kumpulan VisualState objek yang saling eksklusif. Artinya, kontrol selalu dalam keadaan tepat di masing-masing VisualStateGroup.

juga VisualStateManager memungkinkan Anda menentukan kapan kontrol memasuki status tertentu. Metode yang harus Anda panggil untuk mengubah status tergantung pada skenario Anda. Jika Anda membuat kontrol yang menggunakan VisualStateManager di dalamnya ControlTemplate, panggil GoToState metode . Untuk informasi selengkapnya tentang cara membuat kontrol yang menggunakan VisualStateManager, lihat Membuat Kontrol yang Memiliki Tampilan yang Dapat Disesuaikan. Jika Anda menggunakan bagian VisualStateManager luar ControlTemplate (misalnya, jika Anda menggunakan VisualStateManager dalam UserControl atau dalam satu elemen), panggil GoToElementState metode . Dalam kedua kasus, VisualStateManager melakukan logika yang diperlukan untuk memulai dan menghentikan papan cerita yang terkait dengan status yang terlibat dengan tepat. Misalnya, misalkan kontrol mendefinisikan status, State1 dan State2, yang masing-masing memiliki papan cerita yang terkait dengannya. Jika kontrol masuk State1 dan Anda meneruskan State2 ke GoToState atau GoToElementState, VisualStateManager memulai papan cerita di State2 dan menghentikan papan cerita di State1.

Kontrol yang disertakan dengan Windows Presentation Foundation (WPF) menggunakan VisualStateManager untuk mengubah status visual. Saat Anda membuat ControlTemplate untuk kontrol yang disertakan dengan WPF, Anda dapat menambahkan VisualState objek ke kontrol ControlTemplate untuk menentukan tampilan kontrol dalam keadaan tertentu. Untuk menemukan nama status visual untuk kontrol yang disertakan dengan WPF, lihat Gaya Kontrol dan Templat. Logika kontrol menangani transisi antar status, jadi Anda tidak perlu melakukan apa pun selain menentukan VisualState objek di yang baru ControlTemplate. Untuk informasi selengkapnya tentang cara membuat templat kontrol untuk kontrol yang sudah ada, lihat Menyesuaikan Tampilan Kontrol yang Ada dengan Membuat ControlTemplate.

Jika Anda ingin menerapkan logika Anda sendiri untuk transisi antar status, Anda harus mewarisi dari VisualStateManager, mengambil GoToStateCore alih metode , dan mengatur VisualStateManager.CustomVisualStateManager properti terlampir pada kontrol yang menggunakan logika kustom.

Konstruktor

VisualStateManager()

Menginisialisasi instans baru kelas VisualStateManager.

Bidang

CustomVisualStateManagerProperty

CustomVisualStateManager Mengidentifikasi properti dependensi.

VisualStateGroupsProperty

VisualStateGroups Mengidentifikasi properti dependensi.

Properti

DependencyObjectType

Mendapatkan yang membungkus jenis CLR dari instans DependencyObjectType ini.

(Diperoleh dari DependencyObject)
Dispatcher

Dispatcher Mendapatkan ini DispatcherObject dikaitkan dengan.

(Diperoleh dari DispatcherObject)
IsSealed

Mendapatkan nilai yang menunjukkan apakah instans ini saat ini disegel (baca-saja).

(Diperoleh dari DependencyObject)

Properti yang Terlampir

CustomVisualStateManager

Mendapatkan atau mengatur VisualStateManager objek yang beralih antar status kontrol.

VisualStateGroups

Mendapatkan atau mengatur kumpulan VisualStateGroup objek.

Metode

CheckAccess()

Menentukan apakah utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)
ClearValue(DependencyProperty)

Menghapus nilai lokal properti. Properti yang akan dibersihkan ditentukan oleh DependencyProperty pengidentifikasi.

(Diperoleh dari DependencyObject)
ClearValue(DependencyPropertyKey)

Menghapus nilai lokal properti baca-saja. Properti yang akan dibersihkan ditentukan oleh DependencyPropertyKey.

(Diperoleh dari DependencyObject)
CoerceValue(DependencyProperty)

Memaksakan nilai properti dependensi yang ditentukan. Ini dicapai dengan memanggil fungsi apa pun CoerceValueCallback yang ditentukan dalam metadata properti untuk properti dependensi seperti yang ada pada panggilan DependencyObject.

(Diperoleh dari DependencyObject)
Equals(Object)

Menentukan apakah yang disediakan DependencyObject setara dengan saat ini DependencyObject.

(Diperoleh dari DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Mendapatkan properti terlampir CustomVisualStateManager .

GetHashCode()

Mendapatkan kode hash untuk ini DependencyObject.

(Diperoleh dari DependencyObject)
GetLocalValueEnumerator()

Membuat enumerator khusus untuk menentukan properti dependensi mana yang memiliki nilai yang ditetapkan secara lokal pada ini DependencyObject.

(Diperoleh dari DependencyObject)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini pada instans ini dari DependencyObject.

(Diperoleh dari DependencyObject)
GetVisualStateGroups(FrameworkElement)

Mendapatkan properti terlampir VisualStateGroups .

GoToElementState(FrameworkElement, String, Boolean)

Transisi elemen antara dua status. Gunakan metode ini untuk status transisi yang ditentukan oleh aplikasi, bukan ditentukan oleh kontrol.

GoToState(FrameworkElement, String, Boolean)

Transisi kontrol antara dua status. Gunakan metode ini untuk transisi status pada kontrol yang memiliki ControlTemplate.

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

Transisi kontrol antar status.

InvalidateProperty(DependencyProperty)

Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan.

(Diperoleh dari DependencyObject)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Dipanggil setiap kali nilai efektif dari properti dependensi apa pun pada ini DependencyObject telah diperbarui. Properti dependensi tertentu yang berubah dilaporkan dalam data peristiwa.

(Diperoleh dari DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Menaikkan CurrentStateChanging peristiwa pada objek yang ditentukan VisualStateGroup .

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

Menaikkan CurrentStateChanging peristiwa pada objek yang ditentukan VisualStateGroup .

ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika ada.

(Diperoleh dari DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Mengatur nilai properti dependensi tanpa mengubah sumber nilainya.

(Diperoleh dari DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Mengatur properti terlampir CustomVisualStateManager .

SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi, yang ditentukan oleh pengidentifikasi properti dependensinya.

(Diperoleh dari DependencyObject)
SetValue(DependencyPropertyKey, Object)

Mengatur nilai lokal properti dependensi baca-saja, yang ditentukan oleh DependencyPropertyKey pengidentifikasi properti dependensi.

(Diperoleh dari DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus menserialisasikan nilai untuk properti dependensi yang disediakan.

(Diperoleh dari DependencyObject)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
VerifyAccess()

Memberlakukan bahwa utas panggilan memiliki akses ke ini DispatcherObject.

(Diperoleh dari DispatcherObject)

Berlaku untuk