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