DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Yöntem

Tanım

Bu bağımlılık özelliği tanımlayıcısı tarafından temsil edilen salt okunur bağımlılık özelliğinin meta verilerini geçersiz kılar.

public:
 void OverrideMetadata(Type ^ forType, System::Windows::PropertyMetadata ^ typeMetadata);
public void OverrideMetadata(Type forType, System.Windows.PropertyMetadata typeMetadata);
member this.OverrideMetadata : Type * System.Windows.PropertyMetadata -> unit
Public Sub OverrideMetadata (forType As Type, typeMetadata As PropertyMetadata)

Parametreler

forType
Type

Bu bağımlılık özelliğinin bulunduğu tür ve meta veriler geçersiz kılınmalıdır.

typeMetadata
PropertyMetadata

Bu tür için sağlanan meta veriler.

Özel durumlar

Okuma-yazma bağımlılık özelliğinde meta verileri geçersiz kılma girişimi (bu imza kullanılarak yapılamaz).

Sağlanan türde mevcut olduğundan özelliği için meta veriler zaten oluşturulmuştur.

Örnekler

Aşağıdaki örnek, bir sınıfın devraldığı mevcut salt okunur bağımlılık özelliği için meta verileri geçersiz kılar. Bu durumda senaryonun amacı, temel özellik meta verilerinin sahip olmadığı bir zorlama değeri geri çağırması eklemekti. Meta verileri geçersiz kılmanın genellikle uygun olduğu diğer nedenlerden herhangi biri için de meta verileri geçersiz kılabilirsiniz (varsayılan değeri değiştirme, değer ekleme FrameworkPropertyMetadataOptions vb.)

static Fishbowl() {
  Aquarium.AquariumSizeKey.OverrideMetadata(
    typeof(Aquarium),
    new PropertyMetadata(
      double.NaN,
      null,
      new CoerceValueCallback(CoerceFishbowlAquariumSize)
    )
  );
}

static object CoerceFishbowlAquariumSize(DependencyObject d,Object baseValue)
{
    //Aquarium is 2D, a Fishbowl is a round Aquarium, so the Size we return is the ellipse of that height/width rather than the rectangle
    Fishbowl fb = (Fishbowl)d;
    //other constraints assure that H,W are positive
    return Convert.ToInt32(Math.PI * (fb.Width / 2) * (fb.Height / 2));
}
Shared Sub New()
    Aquarium.AquariumSizeKey.OverrideMetadata(GetType(Aquarium), New PropertyMetadata(Double.NaN, Nothing, New CoerceValueCallback(AddressOf CoerceFishbowlAquariumSize)))
End Sub

Private Shared Function CoerceFishbowlAquariumSize(ByVal d As DependencyObject, ByVal baseValue As Object) As Object
    'Aquarium is 2D, a Fishbowl is a round Aquarium, so the Size we return is the ellipse of that height/width rather than the rectangle
    Dim fb As Fishbowl = CType(d, Fishbowl)
    'other constraints assure that H,W are positive
    Return Convert.ToInt32(Math.PI * (fb.Width / 2) * (fb.Height / 2))
End Function

Açıklamalar

Salt okunur bağımlılık özelliğindeki meta verileri geçersiz kılma işlemi, okuma-yazma bağımlılık özelliğindeki meta verileri geçersiz kılmaya benzer nedenlerle yapılır ve meta verilerde belirtilen davranışlar küme davranışını (örneğin varsayılan değer) değiştirebileceğinden anahtar düzeyinde erişimle sınırlıdır.

Okuma-yazma bağımlılık özelliklerinde olduğu gibi, salt okunur bağımlılık özelliğindeki meta verileri geçersiz kılma işlemi yalnızca özellik sistemi tarafından kullanılmak üzere bu özellik kullanılmadan önce yapılmalıdır (bu, özelliği kaydeden nesnelerin belirli örneklerinin örneği oluşturma zamanına eşit olur). çağrısı OverrideMetadata yalnızca bu yöntemin parametresi olarak forType kendisini sağlayan türün statik oluşturucuları içinde veya bu sınıf için eşdeğer başlatma gerçekleştirilmelidir.

Bu yöntem, örneği anahtar parametresi olarak geçirerek yöntemine OverrideMetadata etkili bir şekilde iletirDependencyPropertyKey.

Şunlara uygulanır

Ayrıca bkz.