Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özellik değerlerinin kodunuzun dışından ayarlanmasını önlemek için salt okunur bağımlılık özelliklerini kullanabilirsiniz. Bu makalede, mevcut salt okunur bağımlılık özellikleri ve özel salt okunur bağımlılık özelliği oluşturmaya yönelik senaryolar ve teknikler ele alınmaktadır.
Önkoşullar
Bağımlılık özellikleri hakkında temel bilgilere sahip olduğunuz ve Bağımlılık Özelliklerine Genel Bakış'ı okuduğunuz varsayılmaktadır. Bu makaledeki örnekleri takip etmek için Genişletilebilir Uygulama biçimlendirme dili (XAML) hakkında bilgi sahibi olmanız ve WPF uygulamalarının nasıl yazabileceğinizi bilmeniz yardımcı olur.
Mevcut salt okunur bağımlılık özellikleri
Salt okunur bağımlılık özellikleri genellikle durumu bildirir ve bir public
erişimcisi aracılığıyla değiştirilememelidir. Örneğin, Windows Presentation Foundation (WPF) çerçevesi IsMouseOver özelliğini salt okunur olarak uygular çünkü değeri yalnızca fare girişi tarafından belirlenmelidir. Eğer IsMouseOver
diğer girişlere izin verseydi, değeri fare girişiyle tutarsız hale gelebilirdi. bir public
erişimci aracılığıyla ayarlanmasa da, var olan birçok salt okunur bağımlılık özelliği birden çok giriş tarafından belirlenen değerlere sahiptir.
Salt okunur bağımlılık özelliklerinin kullanımları
Salt okunur bağımlılık özellikleri, bağımlılık özelliklerinin genellikle çözüm sağladığı bazı durumlarda geçerli değildir. Geçerli olmayan senaryolar arasında veri bağlama, bir değere stil uygulama, doğrulama, animasyon ve devralma sayılabilir. Ancak, salt okunur bağımlılık özelliği bir stilde özellik tetikleyicisi olarak kullanılabilir. Örneğin, IsMouseOver genellikle fare üzerine geldiğinde denetimin arka planında, ön planında veya diğer görünür özelliğinde yapılan değişiklikleri tetikleme amacıyla kullanılır. WPF özellik sistemi salt okunur bağımlılık özelliklerindeki değişiklikleri algılar ve raporlar, böylece özellik tetikleyici işlevselliğini destekler. Salt okunur bağımlılık özellikleri, koleksiyon nesnesinin kendisi değil, yalnızca koleksiyon öğelerinin yazılabilir olması gereken koleksiyon türü bağımlılık özelliği uygulanırken de yararlıdır. Daha fazla bilgi için bkz.Koleksiyon türü bağımlılık özelliklerini
Uyarı
Bir stilde özellik tetikleyicileri olarak yalnızca ortak dil çalışma zamanı özellikleri değil yalnızca bağımlılık özellikleri kullanılabilir.
Özel salt okunur bağımlılık özellikleri oluşturma
Salt okunur bir bağımlılık özelliği oluşturmadan önce
Salt okunur bağımlılık özelliği oluşturma işlemi, şu farklarla birlikte okuma-yazma bağımlılık özellikleri oluşturmaya benzer birçok şekilde gerçekleştirilir:
Salt okunur özelliğinizi kaydederken RegisterReadOnlyyerine Register çağırın.
CLR özellik sarmalayıcısını uygularken genel
set
erişimcisinin olmadığından emin olun.RegisterReadOnly
, DependencyPropertyKeyyerine DependencyProperty döndürür.DependencyPropertyKey
'ı özel bir sınıf üyesinde saklayın.
Seçtiğiniz mantığı kullanarak salt okunur bağımlılık özelliğinizin değerini belirleyebilirsiniz. Özellik değerini başlangıçta veya çalışma zamanı mantığının bir parçası olarak ayarlamanın önerilen yolu, SetValuetüründe bir parametre kabul eden DependencyPropertyKey
aşırı yüklemesini kullanmaktır. özellik sistemini aşmak ve yedekleme alanını doğrudan ayarlamak için SetValue
kullanılması tercih edilir.
Uygulamanızdaki salt okunur bağımlılık özelliğinin değerini nasıl ve nerede ayarladığınız, DependencyPropertyKey
depolayan sınıf üyesine atadığınız erişim düzeyini etkiler. Özellik değerini yalnızca bağımlılık özelliğini kaydeden sınıfın içinden ayarlarsanız, private
erişim değiştiricisini kullanabilirsiniz. Bağımlılık özelliklerinin değerlerinin birbirini etkilediği senaryolarda, değer değişikliklerini tetikleme amacıyla eşleştirilmiş PropertyChangedCallback ve CoerceValueCallback geri çağırmaları kullanabilirsiniz. Daha fazla bilgi için bkz. Bağımlılık özelliği meta verileri.
Salt okunur bağımlılık özelliğinin değerini onu kaydeden sınıfın dışından değiştirmeniz gerekiyorsa, internal
için DependencyPropertyKey
erişim değiştiricisini kullanabilirsiniz. Örneğin, aynı derlemedeki bir olay işleyicisinden SetValue
çağırabilirsiniz. Aşağıdaki örnek, bir Aquarium sınıfının RegisterReadOnly
salt okunur bağımlılık özelliğini oluşturmak için FishCount
'ı çağırdığını tanımlar.
DependencyPropertyKey
, aynı derlemedeki kodun salt okunur bağımlılık özellik değerini değiştirebilmesi için bir internal static readonly
alanına atanır.
public class Aquarium : DependencyObject
{
// Register a dependency property with the specified property name,
// property type, owner type, and property metadata.
// Assign DependencyPropertyKey to a nonpublic field.
internal static readonly DependencyPropertyKey FishCountPropertyKey =
DependencyProperty.RegisterReadOnly(
name: "FishCount",
propertyType: typeof(int),
ownerType: typeof(Aquarium),
typeMetadata: new FrameworkPropertyMetadata());
// Declare a public get accessor.
public int FishCount =>
(int)GetValue(FishCountPropertyKey.DependencyProperty);
}
Public Class Aquarium
Inherits DependencyObject
' Register a dependency property with the specified property name,
' property type, owner type, And property metadata.
' Assign DependencyPropertyKey to a nonpublic field.
Friend Shared ReadOnly FishCountPropertyKey As DependencyPropertyKey =
DependencyProperty.RegisterReadOnly(
name:="FishCount",
propertyType:=GetType(Integer),
ownerType:=GetType(Aquarium),
typeMetadata:=New FrameworkPropertyMetadata())
' Declare a public get accessor.
Public ReadOnly Property FishCount As Integer
Get
Return GetValue(FishCountPropertyKey.DependencyProperty)
End Get
End Property
End Class
WPF özellik sistemi DependencyPropertyKey kodunuzun dışına yaymadığından, salt okunur bağımlılık özellikleri okuma-yazma bağımlılık özelliklerinden daha iyi yazma güvenliğine sahiptir. Yazma erişimini DependencyPropertyKey
referansına sahip olanlarla sınırlamak istediğinizde salt okunur bir bağımlılık özelliği kullanın.
Buna karşılık, okuma-yazma bağımlılık özellikleri için bağımlılık özelliği tanımlayıcısı, hangi erişim değiştiriciyi atadığınızdan bağımsız olarak özellik sistemi üzerinden erişilebilir. Daha fazla bilgi için bkz. Bağımlılık özelliği güvenliği.
Ayrıca bakınız
.NET Desktop feedback