Sdílet prostřednictvím


CoerceValueCallback Delegát

Definice

Poskytuje šablonu pro metodu, která je volána při každém přehodnocování hodnoty vlastnosti závislosti nebo je výslovně požadováno donucování.

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 

Parametry

d
DependencyObject

Objekt, na který vlastnost existuje. Při vyvolání zpětného volání předá systém vlastností tuto hodnotu.

baseValue
Object

Nová hodnota vlastnosti před jakýmkoli pokusem o převod.

Návratová hodnota

Vysouzená hodnota (s odpovídajícím typem).

Příklady

Následující příklad obsahuje implementaci tohoto zpětného volání k vysouvání uložené hodnoty vlastnosti závislosti na základě jiných vstupů, jako je například hodnota jiné vlastnosti. V tomto případě zpětné volání zkontroluje, jestli ShirtType vlastnost odpovídá typu košile s tlačítky. Pokud ano, vytvoří výchozí počáteční barvu pro ButtonColor, pokud typ košile nemá tlačítka, ButtonColor převede hodnotu zpět na počáteční hodnotu, což způsobí, že uživatelské rozhraní (nezobrazuje se) odebere tuto rozevírací nabídku z platných voleb.

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

Poznámky

Zpětná volání na CoerceValueCallback základě lze přiřadit vlastnosti závislosti pomocí několika různých technik. Každá z těchto technik vyžaduje, abyste nejprve vytvořili nový objekt metadat vlastnosti (PropertyMetadatanebo odvozenou třídu, například FrameworkPropertyMetadata). Vytvořte objekt metadat pomocí podpisu konstruktoru coerceValueCallback , který převezme parametr, a přiřaďte tento parametr obslužné rutině zpětného volání. Nebo vytvořte metadata libovolným podpisem a nastavte CoerceValueCallback vlastnost před uvedením metadat do provozu.

Pokud máte tato metadata, můžete:

Implementace tohoto zpětného volání by měly zkontrolovat hodnotu v baseValue a určit na základě hodnoty nebo typu, zda se jedná o hodnotu, kterou je potřeba dále vysouvat.

Vlastnost CoerceValueCallback pro závislost je vyvolána kdykoliv, když systém vlastností nebo jakýkoli jiný volající volá CoerceValue instanci DependencyObject , a určuje identifikátor této vlastnosti jako dp.

Změny hodnoty vlastnosti mohly pocházet od libovolného možného účastníka v systému vlastností. Patří sem styly, obecná zneplatnění, triggery, dědičnost hodnot vlastností a nastavení místní hodnoty.

Obecně byste se měli vyhnout zadání více než jednoho CoerceValueCallback pro libovolnou vlastnost závislosti (přepsání nebo přidání s novými metadaty pro vlastnost závislosti, která již měla CoerceValueCallback). Jednat bude moci pouze jedno ze zpětných volání. Působící zpětné volání bude ten, který byl použit pro nejvíce odvozenou třídu v dědičnosti ve srovnání s DependencyObject volajícím. Další zpětná volání přiřazená metadatům vlastnosti závislosti, protože v hierarchii vlastníka existovala výše, se při přepsání metadat nahradí.

Metody rozšíření

GetMethodInfo(Delegate)

Získá objekt, který představuje metodu reprezentovanou zadaným delegátem.

Platí pro

Viz také