Aracılığıyla paylaş


Bağımlılık Özellikleri

Uyarı

Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.

Bağımlılık özelliği (DP), örneğin değerini bir tür değişkeninde (alan) saklamak yerine bir özellik deposunda saklayan sıradan bir özelliktir.

Ekli bağımlılık özelliği, nesneler ve kapsayıcıları arasındaki ilişkileri açıklayan "özellikleri" temsil eden statik Get ve Set yöntemleri olarak modellenen bir bağımlılık özelliği türüdür (örneğin, kapsayıcıdaki Button bir Panel nesnenin konumu).

✔️ Stil oluşturma, tetikleyiciler, veri bağlama, animasyonlar, dinamik kaynaklar ve devralma gibi WPF özelliklerini desteklemek için özelliklere ihtiyacınız varsa, bağımlılık özelliklerini SAĞLAYıN.

Bağımlılık Özelliği Tasarımı

✔️ DO, bağımlılık özelliklerini uygularken alt türlerinden birini veya öğesinden DependencyObjectdevralır. türü, bir özellik deposunun çok verimli bir uygulamasını sağlar ve WPF veri bağlamasını otomatik olarak destekler.

✔️ DO, her bağımlılık özelliği için bir örneğini System.Windows.DependencyProperty depolayan normal bir CLR özelliği ve genel statik salt okunur alan sağlar.

✔️ DependencyObject.GetValue ve DependencyObject.SetValue örnek yöntemlerini çağırarak bağımlılık özelliklerini uygulayın.

✔️ Bağımlılık özellik statik alanının adını, özellik adına "Property" ekleyerek adlandırın.

❌ Bağımlılık özelliklerinin varsayılan değerlerini kodda açıkça AYARLAMAYIN; bunun yerine meta verilerde ayarlayın.

Bir özelliği varsayılan olarak açıkça ayarlarsanız, bu özelliğin stil gibi örtük yollarla ayarlanmasını engelleyebilirsiniz.

❌ Statik alana erişmek için standart kod dışındaki özellik erişimcilerine kod KOYMAYIN.

Bu kod, özellik stil gibi örtük yollarla ayarlanırsa yürütülmeyecektir çünkü stil doğrudan statik alanı kullanır.

❌ Güvenli verileri depolamak için bağımlılık özelliklerini KULLANMAYIN. Özel bağımlılık özelliklerine bile genel olarak erişilebilir.

Eklenmiş Bağımlılık Özelliği Tasarımı

Önceki bölümde açıklanan bağımlılık özellikleri, bildirim türünün iç özelliklerini temsil eder; örneğin özelliği, Text özelliğinin bir özelliğidir TextButtonve bunu bildirir. Özel bir bağımlılık özelliği türü, eklenen bağımlılık özelliğidir.

Ekli bir özelliğin klasik örneği Grid.Column özelliğidir. Özellik, Düğme'nin (Izgara'nın değil) sütun konumunu temsil eder, ancak yalnızca Düğme bir Izgarada yer alıyorsa geçerlidir ve bu durumda Izgara tarafından Düğme'ye "iliştirilir".

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Button Grid.Column="0">Click</Button>
    <Button Grid.Column="1">Clack</Button>
</Grid>

Ekli özelliğin tanımı çoğunlukla normal bağımlılık özelliğine benzer, ancak erişimciler statik Get ve Set yöntemleriyle temsil edilir:

public class Grid {

    public static int GetColumn(DependencyObject obj) {
        return (int)obj.GetValue(ColumnProperty);
    }

    public static void SetColumn(DependencyObject obj, int value) {
        obj.SetValue(ColumnProperty,value);
    }

    public static readonly DependencyProperty ColumnProperty =
        DependencyProperty.RegisterAttached(
            "Column",
            typeof(int),
            typeof(Grid)
    );
}

Bağımlılık Özelliği Doğrulama

Özellikler genellikle doğrulama olarak adlandırılan şeyi uygular. Bir özelliğin değerini değiştirmeye çalışıldığında doğrulama mantığı yürütülür.

Ne yazık ki bağımlılık özelliği erişimcileri rastgele doğrulama kodu içeremez. Bunun yerine, özellik kaydı sırasında bağımlılık özelliği doğrulama mantığı belirtilmelidir.

❌ Bağımlılık özelliği doğrulama mantığını özelliğin erişimcilerine KOYMAYIN. Bunun yerine DependencyProperty.Register yöntemine bir doğrulama geri çağırma işlevi iletin.

Bağımlılık Özelliği Değişiklik Bildirimleri

❌ Bağımlılık özelliği erişimcilerinde değişiklik bildirimi mantığını UYGULAMAYIN. Bağımlılık özellikleri, PropertyMetadata öğesine bir değişiklik bildirimi geri çağırması sağlayarak kullanılması gereken yerleşik bir değişiklik bildirimine sahiptir.

Bağımlılık Özellik Değeri Zorlaması

Özellik deposu gerçekten değiştirilmeden önce bir özellik ayarlayıcısına verilen değer ayarlayıcı tarafından değiştirildiğinde özellik zorlaması gerçekleşir.

❌ Bağımlılık özelliği erişimcilerinde zorlama mantığını UYGULAMAYIN.

Bağımlılık özellikleri yerleşik bir zorlama işlevine sahiptir ve bu işlev, PropertyMetadata öğesine bir zorlama geri çağırma fonksiyonu tanımlanarak kullanılabilir.

Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.

Pearson Education, Inc. tarafından Krzysztof Cwalina ve Brad Abrams'ın Yeniden Kullanılabilir .NET Kütüphaneleri için Çerçeve Tasarım Yönergeleri: Sözleşmeler, Deyimler ve Kalıplar, 2. Baskı eserinden izniyle yeniden basılmıştır. Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi kapsamında 22 Ekim 2008'de yayımlanmıştır.

Ayrıca bakınız