Ekli özelliği kaydetme (WPF .NET)
Bu makalede, ekli özelliğin nasıl kaydedildiği ve ekli özelliğe Genişletilebilir Uygulama Biçimlendirme Dili (XAML) ve kod aracılığıyla erişmenize olanak sağlayan genel erişimcilerin nasıl sağlandığı açıklanır. Ekli özellikler, öğe nesne modelinde bu ek özellikleri tanımlamasa bile herhangi bir XAML öğesinde ek özellik/değer çiftlerinin ayarlanmasını sağlar. Ek özelliklere genel olarak erişilebilir. Ekli özellikler genellikle geleneksel özellik sarmalayıcıya sahip olmayan özel bir bağımlılık özelliği biçimi olarak tanımlanır. Windows Presentation Foundation (WPF) türleri için ekli özelliklerin çoğu bağımlılık özellikleri olarak da uygulanır. Türetilmiş herhangi bir DependencyObject türde bağımlılık özellikleri oluşturabilirsiniz.
Ö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 meta verilerinde varsayılan bir değer belirtme seçeneğine sahiptir. Özellik meta verileri hakkında daha fazla bilgi için bkz . Bağımlılık özelliği meta verileri. Bu örnekte özelliğin HasFish
varsayılan değeri olarak ayarlanmış false
bir Boolean değer türü vardır.
Ekli bir özelliğin sağlayıcı sınıfı, ve Set<property name>
adlandırma kuralına Get<property name>
uyan statik get/set erişimci yöntemleri sağlamalıdır. XAML okuyucusu, ekli özelliğin XAML özniteliğini tanımak ve değerini uygun türe çözümlemek için erişimcileri kullanır. Ekli bir özellik bağımlılık özelliği olarak kaydedilmemiş olsa bile bu erişimciler gereklidir.
public class Aquarium : UIElement
{
// Register an attached dependency property with the specified
// property name, property type, owner type, and property metadata.
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.RegisterAttached(
"HasFish",
typeof(bool),
typeof(Aquarium),
new FrameworkPropertyMetadata(defaultValue: false,
flags: FrameworkPropertyMetadataOptions.AffectsRender)
);
// Declare a get accessor method.
public static bool GetHasFish(UIElement target) =>
(bool)target.GetValue(HasFishProperty);
// Declare a set accessor method.
public static void SetHasFish(UIElement target, bool value) =>
target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
Inherits UIElement
' Register an attached dependency property with the specified
' property name, property type, owner type, and property metadata.
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
New FrameworkPropertyMetadata(defaultValue:=False,
flags:=FrameworkPropertyMetadataOptions.AffectsRender))
' Declare a get accessor method.
Public Shared Function GetHasFish(target As UIElement) As Boolean
Return target.GetValue(HasFishProperty)
End Function
' Declare a set accessor method.
Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
target.SetValue(HasFishProperty, value)
End Sub
End Class
Ayrıca bkz.
.NET Desktop feedback