Salt Okunur Bağımlılık Özellikleri

Bu konu başlığında, var olan salt okunur bağımlılık özellikleri ve özel salt okunur bağımlılık özelliği oluşturma senaryoları ve teknikleri de dahil olmak üzere salt okunur bağımlılık özellikleri açıklanmaktadır.

Ön koşullar

Bu konu başlığında, bağımlılık özelliği uygulamayla ilgili temel senaryoları ve meta verilerin özel bağımlılık özelliğine nasıl uygulandığını anladığınız varsayılır. Bağlam için bkz . Özel Bağımlılık Özellikleri ve Bağımlılık Özelliği Meta Verileri .

Varolan Salt Okunur Bağımlılık Özellikleri

Windows Presentation Foundation (WPF) çerçevesinde tanımlanan bağımlılık özelliklerinden bazıları salt okunur. Salt okunur bağımlılık özelliğini belirtmenin tipik nedeni, bunların durum belirleme için kullanılması gereken özellikler olması, ancak bu durumun çok sayıda faktörden etkilendiği, ancak yalnızca özelliğin bu duruma ayarlanmasının kullanıcı arabirimi tasarımı açısından istenmemesidir. Örneğin, özellik IsMouseOver gerçekten fare girişinden belirlendiği gibi yalnızca gezinme durumudur. Gerçek fare girişini aşarak program aracılığıyla bu değeri ayarlama girişimi tahmin edilemez ve tutarsızlığa neden olur.

Ayarlanamaz olması nedeniyle, salt okunur bağımlılık özellikleri normalde bir çözüm sunan senaryoların çoğu için uygun değildir (yani: veri bağlama, doğrudan bir değere, doğrulamaya, animasyona, devralmaya uygun). Ayarlanamaz olsa da, salt okunur bağımlılık özellikleri, özellik sistemindeki bağımlılık özellikleri tarafından desteklenen ek özelliklerden bazılarına sahiptir. Kalan en önemli özellik, salt okunur bağımlılık özelliğinin yine de bir stilde özellik tetikleyicisi olarak kullanılabilmesidir. Tetikleyicileri normal bir ortak dil çalışma zamanı (CLR) özelliğiyle etkinleştiremezsiniz; bir bağımlılık özelliği olması gerekir. Yukarıda IsMouseOver belirtilen özellik, kullanıcı denetiminizin tanımlı bir bölgesinin üzerine fare yerleştirdiğinde denetim içindeki bileşik öğelerin arka plan, ön plan veya benzer özellikleri gibi bazı görünür özelliklerin değişeceği bir denetim stili tanımlamanın oldukça yararlı olabileceği bir senaryoya mükemmel bir örnektir. Salt okunur bağımlılık özelliğindeki değişiklikler de özellik sisteminin doğal geçersizleştirme işlemleri tarafından algılanabilir ve bildirilebilir ve bu aslında özellik tetikleyici işlevselliğini dahili olarak destekler.

Özel Salt Okunur Bağımlılık Özellikleri Oluşturma

Çoğu tipik bağımlılık-özellik senaryosunda salt okunur bağımlılık özelliklerinin neden çalışmayacağından emin olun. Ancak uygun bir senaryonuz varsa kendi salt okunur bağımlılık özelliğinizi oluşturmak isteyebilirsiniz.

Salt okunur bağımlılık özelliği oluşturma işleminin çoğu, Özel Bağımlılık Özellikleri ve Bağımlılık Özelliği Uygulama konularında açıklananla aynıdır. Üç önemli fark vardır:

  • Özelliğinizi kaydederken, özellik kaydı için normal Register yöntem yerine yöntemini çağırınRegisterReadOnly.

  • CLR "sarmalayıcı" özelliğini uygularken, sarmalayıcının da ayarlanmış bir uygulaması olmadığından emin olun, böylece kullanıma oluşturduğunuz ortak sarmalayıcı için salt okunur durumda tutarsızlık olmaz.

  • Salt okunur kayıt tarafından döndürülen nesne yerine DependencyPropertyolurDependencyPropertyKey. Bu alanı yine de üye olarak depolamanız gerekir, ancak genellikle bu alanı türün genel üyesi yapmazsınız.

Salt okunur bağımlılık özelliğinizi yedeklediğiniz özel alan veya değer, karar vereceğiniz mantık kullanılarak tamamen yazılabilir. Ancak, özelliği başlangıçta veya çalışma zamanı mantığının bir parçası olarak ayarlamanın en kolay yolu, özellik sistemini aşmak ve özel yedekleme alanını doğrudan ayarlamak yerine özellik sisteminin API'lerini kullanmaktır. Özellikle, türünde DependencyPropertyKeybir parametre kabul eden bir imzası SetValue vardır. Bu değeri uygulama mantığınız içinde program aracılığıyla nasıl ve nerede ayarlayacağınız, bağımlılık özelliğini ilk kaydettiğinizde oluşturulan üzerinde DependencyPropertyKey erişimi nasıl ayarlamak isteyebileceğinizi etkiler. Bu mantığın tümünü sınıfın içinde işlerseniz, özel hale getirebilirsiniz veya derlemenin diğer bölümlerinden ayarlanmasını istiyorsanız iç olarak ayarlayabilirsiniz. Yaklaşımlardan biri, bir sınıf örneğine depolanan özellik değerinin değiştirilmesi gerektiğini bildiren ilgili bir olayın sınıf olay işleyicisi içinde çağrı SetValue yapmaktır. Başka bir yaklaşım, kayıt sırasında bu özelliklerin meta verilerinin bir parçası olarak eşleştirilmiş PropertyChangedCallback ve CoerceValueCallback geri çağırmaları kullanarak bağımlılık özelliklerini birbirine bağlamaktır.

DependencyPropertyKey özel olduğundan ve özellik sistemi tarafından kodunuzun dışına yayılmadığından, salt okunur bağımlılık özelliğinin güvenliği okuma-yazma bağımlılık özelliğinden daha iyi ayarlıdır. Okuma-yazma bağımlılığı özelliği için, tanımlayıcı alan açıkça veya örtük olarak geneldir ve bu nedenle özellik yaygın olarak ayarlanabilir. Diğer ayrıntılar için bkz . Bağımlılık Özelliği Güvenliği.

Ayrıca bkz.