Nasıl yapılır: Bağımlılık Özelliği Uygulama
Bu örnekte, ortak dil çalışma zamanı (CLR) özelliğinin bir DependencyProperty alanla nasıl desteklenmeleri ve bu nedenle bağımlılık özelliğinin tanımlanması gösterilmektedir. Kendi özelliklerinizi tanımlayıp stiller, veri bağlama, devralma, animasyon ve varsayılan değerler dahil olmak üzere Windows Presentation Foundation (WPF) işlevselliğinin birçok yönünü desteklemelerini istediğinizde, bunları bağımlılık özelliği olarak uygulamanız gerekir.
Örnek
Aşağıdaki örnek önce yöntemini çağırarak Register bir bağımlılık özelliğini kaydeder. Bağımlılık özelliğinin adını ve özelliklerini depolamak için kullandığınız tanımlayıcı alanının adı, çağrısının Register bir parçası olarak bağımlılık özelliği için seçtiğiniz, değişmez değer dizesiyle Property
eklenmiş olmalıdırName. Örneğin, bir bağımlılık özelliğini ile kaydederseniz, bağımlılık özelliği NameLocation
için tanımladığınız tanımlayıcı alanı olarak adlandırılmalıdır LocationProperty
.
Bu örnekte bağımlılık özelliğinin adı ve CLR erişimcisi şöyledir State
; tanımlayıcı alanıdır StateProperty
; özelliğin türü ; Booleanbağımlılık özelliğini kaydeden tür ise şeklindedir MyStateControl
.
Bu adlandırma desenini izlemezseniz tasarımcılar özelliğinizi doğru raporlamayabilir ve özellik sistemi stili uygulamasının belirli yönleri beklendiği gibi davranmayabilir.
Bağımlılık özelliği için varsayılan meta verileri de belirtebilirsiniz. Bu örnek, bağımlılık özelliğinin State
varsayılan değerini olarak false
kaydeder.
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
Bir CLR özelliğini özel bir alanla yedeklemenin aksine bağımlılık özelliğinin nasıl ve neden uygulandığı hakkında daha fazla bilgi için bkz . Bağımlılık Özelliklerine Genel Bakış.
Ayrıca bkz.
.NET Desktop feedback