DependencyPropertyKey.OverrideMetadata(Type, PropertyMetadata) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.