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 properti terlampir VisualStateManager.VisualStatesGroups
. Contoh mendefinisikan objek MouseOver
dan Normal
VisualState di CommonStates
VisualStateGroup. 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) |