CoerceValueCallback Delegált

Definíció

Sablont biztosít egy metódushoz, amelyet akkor hívunk meg, amikor újraértékelnek egy függőségi tulajdonságértéket, vagy kifejezetten kényszerítést kérnek.

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 

Paraméterek

d
DependencyObject

Az objektum, amelyen a tulajdonság található. A visszahívás meghívásakor a tulajdonságrendszer átadja ezt az értéket.

baseValue
Object

A tulajdonság új értéke, minden kényszerítő kísérlet előtt.

Visszatérési érték

A kényszerített érték (megfelelő típussal).

Példák

Az alábbi példa a visszahívás implementálását tartalmazza, amely a függőségi tulajdonság tárolt értékének kényszerítésére szolgál más bemenetek, például egy másik tulajdonság értéke alapján. Ebben az esetben a visszahívás ellenőrzi, hogy a ShirtType tulajdonság megfelel-e egy gombokkal rendelkező pólótípusnak. Ha így van, akkor a kezdő alapértelmezett színt ButtonColorhatározza meg, ha az ing típusának nincsenek gombjai, akkor az értéket egy kezdő értékre kényszeríti ButtonColor , ami miatt a felhasználói felület (nem jelenik meg) eltávolítja a legördülő listát a tényleges lehetőségek közül.

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

Megjegyzések

A visszahívások a CoerceValueCallback függőségi tulajdonsághoz több különböző technikával rendelhetők hozzá. Ezekhez a technikákhoz először létre kell hoznia egy új tulajdonság metaadat-objektumot (PropertyMetadatavagy egy származtatott osztályt, például FrameworkPropertyMetadata). Hozza létre a metaadat-objektumot a paramétert használó coerceValueCallback konstruktor-aláírással, és rendelje hozzá ezt a paramétert a visszahíváskezelőhöz. Vagy bármilyen aláírással összeállíthatja a metaadatokat, és beállíthatja a CoerceValueCallback tulajdonságot a metaadatok használatba helyezése előtt.

Ha rendelkezik ez a metaadatokkal, a következőt teheti:

  • Adjon meg egy új függőségi tulajdonságot egy új osztályban, amely a metaadatokat értékként Register adja meg bármelyik aláírássaltypeMetadata.

  • Egy meglévő függőségi tulajdonság metaadatainak (hívásának OverrideMetadata(Type, PropertyMetadata)) felülbírálása, ha a függőségi tulajdonságot birtoklevő osztályból származik.

  • Adjon hozzá egy meglévő függőségi tulajdonságot egy új DependencyObject osztályhoz új metaadatok használatával, hívással AddOwner(Type, PropertyMetadata).

A visszahívás implementációinak ellenőriznie kell az értéket, baseValue és az érték vagy a típus alapján kell meghatároznia, hogy ez egy olyan érték,amelyet tovább kell kényszeríteni.

A CoerceValueCallback függőségi tulajdonság minden alkalommal meghívódik, amikor a tulajdonságrendszer vagy bármely más hívó meghív CoerceValue egy DependencyObject példányt, és megadja a tulajdonság azonosítóját.dp

A tulajdonságérték módosítása a tulajdonságrendszer bármely lehetséges résztvevőjétől származhat. Ez magában foglalja a stílusokat, az általános érvénytelenítést, az eseményindítókat, a tulajdonságérték öröklését és a helyi értékbeállítást.

Általában el kell kerülnie, hogy egynél CoerceValueCallback több értéket adjon meg egy adott függőségi tulajdonsághoz (felül kell bírálnia vagy új metaadatokkal kell hozzáadnia egy olyan függőségi tulajdonságot, amely már rendelkezik CoerceValueCallback). Csak az egyik visszahívás fog tudni működni. Az eljáró visszahívás lesz az, amelyet az öröklés leg származtatottabb osztályára alkalmaztak a DependencyObject hívóhoz képest. A függőségi tulajdonság metaadataihoz rendelt egyéb visszahívások, mivel azok a tulajdonosi hierarchiában magasabbak voltak, a metaadatok felülírásakor lecserélődik.

Bővítő metódusok

Name Description
GetMethodInfo(Delegate)

Lekéri a megadott meghatalmazott által képviselt metódust képviselő objektumot.

A következőre érvényes:

Lásd még