Bağımlılık özellikleri için çerçeve özelliği meta veri seçeneklerini Windows Presentation Foundation (WPF) çerçeve düzeyinde ayarlayabilirsiniz. WPF sunum API'leri ve yürütülebilir dosyalar render ve veri bağlamayı ele aldığında, WPF çerçeve düzeyi ataması uygulanır. Sunu API'leri ve yürütülebilir dosyalar, bağımlılık özelliğinin FrameworkPropertyMetadata sorgular.
Önkoşullar
Makalede, bağımlılık özellikleri hakkında temel bilgilere sahip olduğunuz ve Bağımlılık Özelliklerine Genel Bakışokuduğunuz varsayılı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.
Bir öğenin düzenini etkileyen meta veriler, özellikle de AffectsArrange, AffectsMeasureve AffectsRender meta veri bayrakları. Bağımlılık özelliği uygulamanız görsel bir yönü etkiliyorsa ve sınıfınızda MeasureOverride veya ArrangeOverride uyguluyorsanız bu bayrakları ayarlayabilirsiniz.
MeasureOverride ve ArrangeOverride yöntemleri, uygulamaya özgü davranış ve işleme bilgilerini düzen sistemine sağlar.
AffectsArrange, AffectsMeasureveya AffectsRender bir bağımlılık özelliğinin meta verilerinde true olarak ayarlandığında ve geçerli değeri değiştiğinde WPF özellik sistemi, öğenin görsellerini geçersiz kılma isteği başlatarak yeniden çizim tetikler.
Özellik değeri devralma meta verileri, özellikle Inherits ve OverridesInheritanceBehavior meta veri bayrakları. Varsayılan olarak, bağımlılık özellikleri değerleri devralmaz.
OverridesInheritanceBehavior, devralma yolunun bazı denetim oluşturma senaryoları için gerekli olan görsel bir ağaca da seyahat etmesini sağlar. Daha fazla bilgi için bkz. Özellik değeri kalıtımı.
Not
Özellik değerleri bağlamında "devralır" terimi bağımlılık özelliklerine özgüdür ve türetilmiş türler aracılığıyla yönetilen kod türleri ve üye devralma ile doğrudan ilişkili değildir. Bağımlılık özellikleri bağlamında, alt öğelerin üst öğelerden bağımlılık özelliği değerlerini devralabileceği anlamına gelir.
Veri bağlama meta verileri, özellikle BindsTwoWayByDefault ve IsNotDataBindable meta veri bayrakları. Varsayılan olarak, WPF çerçevesindeki bağımlılık özellikleri tek yönlü bağlamayı destekler. Durum 'ı bildiren ve'in kullanıcı eylemiyle değiştirilebildiği özellikler için varsayılan olarak iki yönlü bağlamayı ayarlamayı göz önünde bulundurun, örneğin IsSelected. Ayrıca, kullanıcıların bir denetimden bir özelliğin iki yönlü bağlamayı uygulamasını beklediği durumlarda, varsayılan olarak iki yönlü bağlamayı ayarlamayı düşünün, örneğin TextBox.Text.
BindsTwoWayByDefault yalnızca varsayılan bağlama modunu etkiler. Bağlamanın veri akışı yönünü düzenlemek için binding.modeayarlayın. Kullanım örneği olmadığında veri bağlamayı devre dışı bırakmak için IsNotDataBindable kullanabilirsiniz. Veri bağlamaları hakkında daha fazla bilgi için bkz. Veri bağlamaya genel bakış.
Günlükleme meta verisi, özellikle de Journal meta veri bayrağı.
Journal bayrağının varsayılan değeri yalnızca SelectedIndexgibi bazı bağımlılık özellikleri için true. Kullanıcı giriş denetimleri, değerleri depolanması gereken kullanıcı seçimlerini barındıran özellikler için Journal bayrağını ayarlamalıdır.
Journal bayrağı, WPF günlük oluşturma hizmetleri de dahil olmak üzere günlük kaydı destekleyen uygulamalar veya hizmetler tarafından okunur. Gezinti adımlarını depolama hakkında bilgi için bkz. Gezintiye genel bakış.
FrameworkPropertyMetadata, doğrudan UIPropertyMetadata'den türetilmiştir ve burada tartışılan bayrakları uygular. Özellikle ayarlanmadığı sürece, FrameworkPropertyMetadata bayrakları varsayılan falsedeğerine sahiptir.
FrameworkPropertyMetadata'yi Okuma
Bir bağımlılık özelliğinin meta verilerini almak için DependencyProperty tanımlayıcıda GetMetadata çağırın.
GetMetadata çağrısı bir PropertyMetadata nesnesi döndürür. Çerçeve meta veri değerlerini sorgulamak için PropertyMetadata'u FrameworkPropertyMetadata'e dönüştürmeniz gerekiyorsa.
FrameworkPropertyMetadata Belirleme
Bağımlılık özelliğini kaydettiğinizde, buna meta veri oluşturma ve atama seçeneğiniz vardır. Atadığınız meta veri nesnesi PropertyMetadata veya FrameworkPropertyMetadatagibi türetilmiş sınıflarından biri olabilir. WPF sunu API'lerini ve işleme ve veri bağlama için yürütülebilir dosyaları kullanan bağımlılık özellikleri için FrameworkPropertyMetadata seçin. Daha gelişmiş bir seçenek, daha fazla işaret içeren özelleştirilmiş bir meta veri raporlama sınıfı oluşturmak için FrameworkPropertyMetadata'dan türetmektir. Öte yandan, UIPropertyMetadata kullanıcı arabirimi işlemeyi etkileyen çerçeve dışı özellikler için de kullanabilirsiniz.
Meta veri seçenekleri genellikle yeni bir bağımlılık özelliğinin kaydı sırasında ayarlanmış olsa da, bunları OverrideMetadata veya AddOwner çağrılarında yeniden belirtebilirsiniz. Meta verileri geçersiz kılarken, her zaman özellik kaydı sırasında kullanılan meta veri türüyle geçersiz kılın.
FrameworkPropertyMetadata tarafından gösterilen özellikler bazen bayrakları olarak adlandırılır.
FrameworkPropertyMetadata örneği oluşturuyorsanız bayrak değerlerini doldurmanın iki yolu vardır:
FrameworkPropertyMetadataOptions numaralandırma türünün bir örneğinde bayrakları ayarlayın.
FrameworkPropertyMetadataOptions, meta veri bayraklarını bit düzeyinde OR bileşiminde belirtmenize olanak tanır. Öncelikle, FrameworkPropertyMetadataOptions parametresi olan bir oluşturucu kullanarak FrameworkPropertyMetadata örneğini oluşturun ve ardından FrameworkPropertyMetadataOptions örneğinizi girin.
FrameworkPropertyMetadataOptionsFrameworkPropertyMetadata oluşturucusuna geçirildikten sonra meta veri bayraklarını değiştirmek için, yeni FrameworkPropertyMetadata örneğinde ilgili özelliği değiştirin. Örneğin, FrameworkPropertyMetadataOptions.NotDataBindable bayrağını ayarlarsanız, FrameworkPropertyMetadata.IsNotDataBindablefalseolarak ayarlayarak bunu geri alabilirsiniz.
FrameworkPropertyMetadataOptions parametresi olmayan bir oluşturucu kullanarak FrameworkPropertyMetadata örneği oluşturup FrameworkPropertyMetadataüzerinde uygun Boolean bayraklarını ayarlayın.
FrameworkPropertyMetadata örneğinizi bağımlılık özelliğiyle ilişkilendirmeden önce bayrak değerlerini ayarlayın; aksi takdirde bir InvalidOperationExceptionalırsınız.
Meta veriyi geçersiz kılma davranışı
Çerçeve özelliği meta verilerini geçersiz kıldığınızda, değiştirilen meta veri değerleri özgün değerlerin yerini alır veya bunlarla birleştirilir:
PropertyChangedCallbackiçin, varsayılan birleştirme mantığı bir tablodaki önceki PropertyChangedCallback değerlerini korur ve tümü bir özellik değişikliğinde çağrılır. Geri çağırma sırası, hiyerarşideki temel sınıf tarafından kaydedilen bir geri çağırmanın ilk olarak çalıştırıldığı sınıf derinliğine göre belirlenir. Devralınan geri çağırmalar yalnızca bir kez çalıştırılır ve bunları meta veriye ekleyen sınıfa aittir.
DefaultValueiçin, yeni değer mevcut varsayılan değerin yerini alır. Geçersiz kılma meta verilerinde bir DefaultValue belirtmezseniz ve var olan FrameworkPropertyMetadataInherits bayrağı ayarlanmışsa, varsayılan değer meta verilerde DefaultValue belirten en yakın üst değerden gelir.
CoerceValueCallbackiçin, yeni değer mevcut bir CoerceValueCallback değerinin yerini alır. Geçersiz kılma meta verilerinde bir CoerceValueCallback belirtmezseniz, değer miras zincirinde CoerceValueCallbackbelirten en yakın üstten gelir.
Varsayılan birleştirme mantığı Merge yöntemi tarafından uygulanır. Bağımlılık özelliğini devralan türetilmiş bir sınıfta özel birleştirme mantığı belirtmek için, bu sınıfta Merge metodunu geçersiz kılabilirsiniz.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET Desktop feedback geri bildirimi
.NET Desktop feedback, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.