Bagikan melalui


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 properti terlampir VisualStateManager.VisualStatesGroups. Contoh mendefinisikan objek MouseOver dan NormalVisualState di CommonStatesVisualStateGroup. Ketika pengguna memindahkan penunjuk mouse di atas Rectangle, itu berubah dari merah ke hijau selama satu setengah detik. Ketika pengguna memindahkan mouse menjauh dari persegi panjang, Grid segera berubah kembali menjadi merah. Perhatikan bahwa status Normal tidak menentukan Storyboard. Storyboard tidak diperlukan karena ketika Rectangle transisi dari status MouseOver ke status Normal, Storyboard untuk MouseOver dihentikan dan properti Color 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 metode GoToElementState untuk transisi antar status. Jika persegi panjang dalam contoh sebelumnya adalah bagian dari ControlTemplate, contohnya harus memanggil metode GoToState.

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

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

VisualStateManager juga 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 ControlTemplate, panggil metode GoToState. Untuk informasi selengkapnya tentang cara membuat kontrol yang menggunakan VisualStateManager, lihat Membuat Kontrol yang Memiliki Tampilan yang Dapat Disesuaikan. Jika Anda menggunakan VisualStateManager di luar ControlTemplate (misalnya, jika Anda menggunakan VisualStateManager dalam UserControl atau dalam satu elemen), panggil metode GoToElementState. Dalam kedua kasus, VisualStateManager melakukan logika yang diperlukan untuk memulai dan menghentikan papan cerita yang terkait dengan status yang terlibat. Misalnya, kontrol menentukan status, State1, dan State2, yang masing-masing memiliki papan cerita yang terkait dengannya. Jika kontrol berada di 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 objek VisualState ke ControlTemplate kontrol 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 objek VisualState di ControlTemplatebaru. Untuk informasi selengkapnya tentang cara membuat templat kontrol untuk kontrol yang 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 alih metode GoToStateCore, dan mengatur properti terlampir VisualStateManager.CustomVisualStateManager pada kontrol yang menggunakan logika kustom.

Konstruktor

VisualStateManager()

Menginisialisasi instans baru kelas VisualStateManager.

Bidang

CustomVisualStateManagerProperty

Mengidentifikasi properti dependensi CustomVisualStateManager.

VisualStateGroupsProperty

Mengidentifikasi properti dependensi VisualStateGroups.

Properti

DependencyObjectType

Mendapatkan DependencyObjectType yang membungkus jenis CLR instans ini.

(Diperoleh dari DependencyObject)
Dispatcher

Mendapatkan DispatcherDispatcherObject ini dikaitkan.

(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 objek VisualStateManager yang beralih antara status kontrol.

VisualStateGroups

Mendapatkan atau mengatur kumpulan objek VisualStateGroup.

Metode

CheckAccess()

Menentukan apakah utas panggilan memiliki akses ke DispatcherObjectini.

(Diperoleh dari DispatcherObject)
ClearValue(DependencyProperty)

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

(Diperoleh dari DependencyObject)
ClearValue(DependencyPropertyKey)

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

(Diperoleh dari DependencyObject)
CoerceValue(DependencyProperty)

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

(Diperoleh dari DependencyObject)
Equals(Object)

Menentukan apakah DependencyObject yang disediakan setara dengan DependencyObjectsaat ini.

(Diperoleh dari DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Mendapatkan properti terlampir CustomVisualStateManager.

GetHashCode()

Mendapatkan kode hash untuk DependencyObjectini.

(Diperoleh dari DependencyObject)
GetLocalValueEnumerator()

Membuat enumerator khusus untuk menentukan properti dependensi mana yang telah mengatur nilai secara lokal pada DependencyObjectini.

(Diperoleh dari DependencyObject)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini pada instans DependencyObjectini.

(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 didefinisikan oleh aplikasi, daripada didefinisikan oleh kontrol.

GoToState(FrameworkElement, String, Boolean)

Transisi kontrol antara dua status. Gunakan metode ini untuk status transisi 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 Objectsaat ini.

(Diperoleh dari Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

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

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

Menaikkan peristiwa CurrentStateChanging pada objek VisualStateGroup yang ditentukan.

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

Menaikkan peristiwa CurrentStateChanging pada objek VisualStateGroup yang ditentukan.

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 pengidentifikasi DependencyPropertyKey properti dependensi.

(Diperoleh dari DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus membuat serialisasi 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 DispatcherObjectini .

(Diperoleh dari DispatcherObject)

Berlaku untuk