Cara: Menambahkan Jenis Pemilik untuk Properti Dependensi
Contoh ini menunjukkan cara menambahkan kelas sebagai pemilik properti dependensi yang terdaftar untuk jenis yang berbeda. Dengan melakukan ini, pembaca WPF XAML dan sistem properti keduanya dapat mengenali kelas sebagai pemilik tambahan properti. Menambahkan sebagai pemilik secara opsional memungkinkan penambahan kelas untuk menyediakan metadata khusus jenis.
Dalam contoh berikut, StateProperty
adalah properti yang didaftarkan oleh MyStateControl
kelas . Kelas UnrelatedStateControl
menambahkan dirinya sebagai pemilik menggunakan StateProperty
AddOwner metode , khususnya menggunakan tanda tangan yang memungkinkan metadata baru untuk properti dependensi seperti yang ada pada jenis penambahan. Perhatikan bahwa Anda harus menyediakan pengakses runtime bahasa umum (CLR) untuk properti yang mirip dengan contoh yang ditunjukkan dalam contoh Terapkan Properti Dependensi, serta mengekspos ulang pengidentifikasi properti dependensi pada kelas yang ditambahkan sebagai pemilik.
Tanpa pembungkus, properti dependensi masih akan berfungsi dari perspektif akses terprogram menggunakan GetValue atau SetValue. Tetapi Anda biasanya ingin menyejajarkan perilaku sistem properti ini dengan pembungkus properti CLR. Pembungkus memudahkan untuk mengatur properti dependensi secara terprogram, dan memungkinkan untuk mengatur properti sebagai atribut XAML.
Untuk mengetahui cara mengambil alih metadata default, lihat Mengambil alih Metadata untuk Properti Dependensi.
Contoh
public class MyStateControl : ButtonBase
{
public MyStateControl() : base() { }
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
"State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
Public Class MyStateControl
Inherits ButtonBase
Public Sub New()
MyBase.New()
End Sub
Public Property State() As Boolean
Get
Return CType(Me.GetValue(StateProperty), Boolean)
End Get
Set(ByVal value As Boolean)
Me.SetValue(StateProperty, value)
End Set
End Property
Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
End Class
public class UnrelatedStateControl : Control
{
public UnrelatedStateControl() { }
public static readonly DependencyProperty StateProperty = MyStateControl.StateProperty.AddOwner(typeof(UnrelatedStateControl), new PropertyMetadata(true));
public Boolean State
{
get { return (Boolean)this.GetValue(StateProperty); }
set { this.SetValue(StateProperty, value); }
}
}
Public Class UnrelatedStateControl
Inherits Control
Public Sub New()
End Sub
Public Shared ReadOnly StateProperty As DependencyProperty = MyStateControl.StateProperty.AddOwner(GetType(UnrelatedStateControl), New PropertyMetadata(True))
Public Property State() As Boolean
Get
Return CType(Me.GetValue(StateProperty), Boolean)
End Get
Set(ByVal value As Boolean)
Me.SetValue(StateProperty, value)
End Set
End Property
End Class
Baca juga
.NET Desktop feedback
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