VisualStateManager Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 Normal
VisualState di CommonStates
VisualStateGroup. 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk