CoerceValueCallback Temsilci
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.
Bağımlılık özelliği değeri yeniden değerlendirildiğinde veya özellikle zorlama istenildiğinde çağrılan bir yöntem için bir şablon sağlar.
public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object
Parametreler
Özelliğin bulunduğu nesne. Geri çağırma çağrıldığında, özellik sistemi bu değeri geçirir.
- baseValue
- Object
Herhangi bir zorlama girişiminden önce özelliğin yeni değeri.
Dönüş Değeri
Zorlamalı değer (uygun türe sahip).
Örnekler
Aşağıdaki örnek, bir bağımlılık özelliğinin depolanmış değerini başka bir özelliğin değeri gibi diğer girişlere göre zorlamak için bu geri çağırmanın bir uygulamasını içerir. Bu durumda, geri arama özelliğin ShirtType
düğmeleri olan bir gömlek türüne karşılık gelip gelmediğini denetler; bu durumda için başlangıç varsayılan rengi ButtonColor
oluşturur, gömlek türünde düğme yoksa, ButtonColor
değeri yeniden başlangıç değerine sıkıştırarak kullanıcı arabiriminin (gösterilmez) bu açılan listeyi etkin seçeneklerden kaldırmasına neden olur.
private static object CoerceButtonColor(DependencyObject d, object value)
{
ShirtTypes newShirtType = (d as Shirt).ShirtType;
if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
{
return ButtonColors.Black;
}
return ButtonColors.None;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
Return ButtonColors.Black
End If
Return ButtonColors.None
End Function
Açıklamalar
tabanlı CoerceValueCallback geri çağırmalar, birkaç farklı teknikle bir bağımlılık özelliğine atanabilir. Bu tekniklerin her biri için önce yeni bir özellik meta veri nesnesi (PropertyMetadataveya gibi FrameworkPropertyMetadatatüretilmiş bir sınıf) oluşturmanız gerekir. Parametresini alan bir oluşturucu imzası kullanarak meta veri nesnesini oluşturun ve bu parametreyi coerceValueCallback
geri çağırma işleyicinize atayın. Veya meta verileri herhangi bir imzayla oluşturun ve meta verileri kullanıma koymadan önce özelliğini ayarlayın CoerceValueCallback .
Bu meta veriye sahip olduğunuzda şunları yapabilirsiniz:
yeni bir sınıfta yeni bir bağımlılık özelliği tanımlayın ve her iki imzadan Registerbirini kullanarak meta verileri değer olarak
typeMetadata
belirtin.Bağımlılık özelliğinin sahibi olan sınıftan türetildiğinde, var olan bir bağımlılık özelliği için meta verileri (çağrısı OverrideMetadata(Type, PropertyMetadata)) geçersiz kılın.
çağrısı AddOwner(Type, PropertyMetadata)yaparak yeni meta verileri kullanarak var olan bir bağımlılık özelliğini yeni DependencyObject bir sınıfa ekleyin.
Bu geri çağırmanın uygulamaları içindeki baseValue
değerini denetlemeli ve değere veya türüne göre bunun daha fazla zorlama gerektiren bir değer olup olmadığını belirlemelidir.
CoerceValueCallback bir bağımlılık özelliği için, özellik sistemi veya başka bir çağıranın bir DependencyObject örnekte çağırıldığı CoerceValue her zaman çağrılır ve bu özelliğin tanımlayıcısı olarak dp
belirtilir.
Özellik değerinde yapılan değişiklikler, özellik sistemindeki herhangi bir olası katılımcıdan gelmiş olabilir. Buna stiller, genel geçersizleştirme, tetikleyiciler, özellik değeri devralma ve yerel değer ayarı dahildir.
Genel olarak, belirli bir bağımlılık özelliği için birden CoerceValueCallback fazla değer belirtmekten kaçınmanız gerekir (zaten bir bağımlılık özelliğine sahip CoerceValueCallbackolan bir bağımlılık özelliği için yeni meta verileri geçersiz kılma veya ekleme). Geri aramalardan yalnızca biri işlem yapabilir. Geri çağırma, çağıranla karşılaştırıldığında devralmadaki en türetilmiş sınıfa DependencyObject uygulanan geri çağırma olacaktır. Sahip hiyerarşisinde daha yüksek olduğu için bağımlılık özelliği için meta veriye atanan diğer geri çağırmalar, meta veriler geçersiz kılındığında değiştirilir.
Uzantı Metotları
GetMethodInfo(Delegate) |
Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır. |