İngilizce dilinde oku

Aracılığıyla paylaş


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 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.

Çerçeve özelliği meta veri kategorileri

FrameworkPropertyMetadata şu kategorilere ayrılır:

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

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

  • Ö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:

  1. 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. FrameworkPropertyMetadataOptions FrameworkPropertyMetadata 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.

  2. 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.

  • Devralınmayan FrameworkPropertyMetadata bayraklar için, varsayılan false değerini true değerle geçersiz kılabilirsiniz. Ancak, true değerini yalnızca Inherits, Journal, OverridesInheritanceBehaviorve SubPropertiesDoNotAffectRenderiçin false değeriyle geçersiz kılabilirsiniz.

Not

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.

Ayrıca bkz.