Framework özellik meta verileri (WPF .NET)

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 sunu API'leri ve yürütülebilir dosyalar işleme ve veri bağlamayı işlediğinde WPF çerçeve düzeyi ataması uygulanır. Sunu API'leri ve yürütülebilir dosyalar bağımlılık özelliğini sorgular FrameworkPropertyMetadata .

Önkoşullar

Makalede bağımlılık özellikleri hakkında temel bilgiler edindiğiniz ve Bağımlılık özelliklerine genel bakış makalesini 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.

Çerçeve özelliği meta veri kategorileri

FrameworkPropertyMetadata şu kategorilere ayrılır:

  • Bir öğenin düzenini etkileyen meta veriler, özellikle AffectsArrange, AffectsMeasureve AffectsRender meta veri bayrakları. Bağımlılık özelliği uygulamanız görsel bir yönü etkiliyorsa ve veya sınıfınızda uyguluyorsanız MeasureOverride ArrangeOverride bu bayrakları ayarlayabilirsiniz. MeasureOverride ve ArrangeOverride yöntemleri, düzen sistemine uygulamaya özgü davranış ve işleme bilgileri sağlar. AffectsArrange, AffectsMeasureveya AffectsRender bir bağımlılık özelliğinin meta verilerinde olarak ayarlandığında true ve etkin değeri değiştiğinde, WPF özellik sistemi öğenin görsellerini geçersiz kılma isteği başlatarak yeniden çizim tetikler.

  • Bir öğenin üst öğesinin düzenini etkileyen meta veriler, özellikle AffectsParentArrange ve AffectsParentMeasure meta veri bayrakları. Bu bayrakları ayarlayan WPF bağımlılık özelliklerine örnek olarak ve Paragraph.KeepWithNextverilebilirFixedPage.Left.

  • Ö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 devralma.

    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. Durumu raporlayan ve kullanıcı eylemi tarafından değiştirilebilir özellikler için varsayılan olarak iki yönlü bağlama ayarlamayı göz önünde bulundurun, örneğin IsSelected. Ayrıca, bir denetimin kullanıcıları bir özelliğin uygulamayı beklediğinde ( örneğin TextBox.Text) iki yönlü bağlamayı varsayılan olarak ayarlamayı göz önünde bulundurun. BindsTwoWayByDefault yalnızca varsayılan bağlama modunu etkiler. Bağlamanın veri akışı yönünü düzenlemek için Binding.Mode değerini ayarlayın. Kullanım örneği olmadığında veri bağlamayı devre dışı bırakmak için kullanabilirsiniz IsNotDataBindable . Veri bağlamaları hakkında daha fazla bilgi için bkz . Veri bağlamaya genel bakış.

  • Günlük meta verileri, özellikle Journal meta veri bayrağı. bayrağının Journal varsayılan değeri yalnızca true gibi SelectedIndexbazı bağımlılık özellikleri içindir. Kullanıcı giriş denetimleri, değerleri depolanması gereken kullanıcı seçimlerini barındıran özellikler için bayrağı ayarlamalıdır Journal . Bayrağı Journal , 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 öğesinden UIPropertyMetadatatüretilir ve burada açıklanan bayrakları uygular. Özellikle ayarlanmadığı sürece, FrameworkPropertyMetadata bayrakların varsayılan değeri vardır false.

Reading FrameworkPropertyMetadata

Bağımlılık özelliğinin meta verilerini almak için tanımlayıcıyı çağırın GetMetadata DependencyProperty . Çağrısı GetMetadata bir PropertyMetadata nesne döndürür. Çerçeve meta veri değerlerinin 'e yayınlarını PropertyMetadata FrameworkPropertyMetadatasorgulamanız gerekiyorsa.

FrameworkPropertyMetadata Belirtme

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 veya gibi FrameworkPropertyMetadatatüretilmiş sınıflarından biri olabilirPropertyMetadata. WPF sunu API'lerini ve işleme ve veri bağlama için yürütülebilir dosyaları kullanan bağımlılık özelliklerini seçin FrameworkPropertyMetadata . Daha gelişmiş bir seçenek, daha fazla bayrak içeren bir özel meta veri raporlama sınıfı oluşturmak için öğesinden FrameworkPropertyMetadata türetmektir. Veya kullanıcı arabirimi işlemeyi etkileyen çerçeve dışı özellikler için de kullanabilirsiniz UIPropertyMetadata .

Meta veri seçenekleri genellikle yeni bir bağımlılık özelliğinin kaydı sırasında ayarlansa da, bunları veya AddOwner çağrılarında OverrideMetadata 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.

tarafından FrameworkPropertyMetadata kullanıma sunulan özellik özellikleri bazen bayraklar olarak adlandırılır. Örnek FrameworkPropertyMetadata oluşturuyorsanız bayrak değerlerini doldurmanın iki yolu vardır:

  1. Numaralandırma türünün bir örneğinde FrameworkPropertyMetadataOptions bayrakları ayarlayın. FrameworkPropertyMetadataOptions bit düzeyinde VEYA bileşiminde meta veri bayrakları belirtmenize olanak tanır. Ardından, parametresi olan FrameworkPropertyMetadataOptions bir oluşturucu kullanarak örneği FrameworkPropertyMetadata oluşturun ve örneğinizi FrameworkPropertyMetadataOptions geçirin. Oluşturucuya geçtikten FrameworkPropertyMetadataOptions FrameworkPropertyMetadata sonra meta veri bayraklarını değiştirmek için, yeni FrameworkPropertyMetadata örnekte ilgili özelliği değiştirin. Örneğin, bayrağını ayarlarsanız FrameworkPropertyMetadataOptions.NotDataBindable olarak ayarlayarak FrameworkPropertyMetadata.IsNotDataBindable falsebunu geri alabilirsiniz.

  2. FrameworkPropertyMetadata Parametresi olmayan FrameworkPropertyMetadataOptions bir oluşturucu kullanarak örneği oluşturup geçerli bayrakları üzerinde FrameworkPropertyMetadataayarlayınBoolean. Örneğinizi FrameworkPropertyMetadata bir bağımlılık özelliğiyle ilişkilendirmeden önce bayrak değerlerini ayarlayın; aksi takdirde bir InvalidOperationExceptionalırsınız.

Meta veri 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:

  • için PropertyChangedCallback, varsayılan birleştirme mantığı bir tablodaki önceki PropertyChangedCallback değerleri 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.

  • için DefaultValue, yeni değer mevcut varsayılan değerin yerini alır. Geçersiz kılma meta verilerinde bir DefaultValue belirtmezseniz ve mevcutta FrameworkPropertyMetadata Inherits bayrak ayarlanmışsa, varsayılan değer meta verilerde belirtilen DefaultValue en yakın üst bilgiden gelir.

  • için CoerceValueCallback, yeni değer mevcut CoerceValueCallback bir değerin yerini alır. Geçersiz kılma meta verilerinde belirtmezseniz CoerceValueCallback , değer devralma zincirinde belirtilen CoerceValueCallbacken yakın üst bilgiden gelir.

  • Devralınmayan bayraklar için FrameworkPropertyMetadata varsayılan false değeri bir true değerle geçersiz kılabilirsiniz. Ancak, bir true değeri yalnızca , , JournalOverridesInheritanceBehaviorve SubPropertiesDoNotAffectRenderiçin Inheritsbir false değerle geçersiz kılabilirsiniz.

Not

Varsayılan birleştirme mantığı yöntemi tarafından Merge uygulanır. Bir bağımlılık özelliğini devralan türetilmiş bir sınıfta, bu sınıfta geçersiz kılarak Merge özel birleştirme mantığı belirtebilirsiniz.

Ayrıca bkz.