CoerceValueCallback Temsilci

Tanım

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

d
DependencyObject

Ö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

Object

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 ButtonColoroluş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 dpbelirtilir.

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

Şunlara uygulanır

Ayrıca bkz.