Aracılığıyla paylaş


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 var olduğu ve meta verilerin geçersiz kılınacağı tü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ür üzerinde 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 bir 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ılma gibi benzer nedenlerle yapılır ve meta verilerde belirtilen davranışlar ayarlanan davranışı (ö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 bir bağımlılık özelliğindeki meta verilerin geçersiz kılınması yalnızca bu özelliğin özellik sistemi tarafından kullanılmaya başlamadan önce yapılması gerekir (bu, özelliği kaydeden nesnelerin belirli örneklerinin örneğinin örneklendiği zamana karşılık geliyor). çağrısı OverrideMetadata yalnızca bu yöntemin parametresi veya bu sınıf için eşdeğer başlatma olarak forType kendisini sağlayan türün statik oluşturucuları içinde gerçekleştirilmelidir.

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

Şunlara uygulanır

Ayrıca bkz.