Nasıl yapılır: Ekli Özelliği Kaydetme
Bu örnekte, hem XAML'de hem de kodda özelliğini kullanabilmeniz için ekli bir özelliğin nasıl kaydedilip genel erişimcilerin nasıl sağlandığı gösterilir. Ekli özellikler, XAML tarafından tanımlanan bir söz dizimi kavramıdır. WPF türleri için ekli özelliklerin çoğu da bağımlılık özellikleri olarak uygulanır. Bağımlılık özelliklerini herhangi bir DependencyObject türde kullanabilirsiniz.
Örnek
Aşağıdaki örnekte, yöntemini kullanarak ekli bir özelliğin bağımlılık özelliği olarak nasıl kaydedildiği gösterilmektedir RegisterAttached . Sağlayıcı sınıfı, özellik başka bir sınıfta kullanıldığında geçerli olan özellik için varsayılan meta veriler sağlama seçeneğine sahiptir. Bu sınıf meta verileri geçersiz kılmadığı sürece. Bu örnekte özelliğin varsayılan değeri IsBubbleSource
olarak false
ayarlanır.
Ekli bir özelliğin sağlayıcı sınıfı (bağımlılık özelliği olarak kaydedilmemiş olsa bile) [AttachedPropertyName] ve [AttachedPropertyName] adlandırma kuralına Set
uyan statik get ve Get
set erişimcileri sağlamalıdır. Bu erişimciler, eylemci XAML okuyucusunun özelliği XAML'de öznitelik olarak tanıyabilmesi ve uygun türleri çözümleyebilmesi için gereklidir.
public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
"IsBubbleSource",
typeof(Boolean),
typeof(AquariumObject),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
Public Shared ReadOnly IsBubbleSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached("IsBubbleSource", GetType(Boolean), GetType(AquariumObject), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender))
Public Shared Sub SetIsBubbleSource(ByVal element As UIElement, ByVal value As Boolean)
element.SetValue(IsBubbleSourceProperty, value)
End Sub
Public Shared Function GetIsBubbleSource(ByVal element As UIElement) As Boolean
Return CType(element.GetValue(IsBubbleSourceProperty), Boolean)
End Function
Ayrıca bkz.
.NET Desktop feedback