Sdílet prostřednictvím


CoerceValueCallback Delegát

Definice

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

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í systém vlastností předá tuto hodnotu.

baseValue
Object

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

Návratová hodnota

Přetěžovaná hodnota (s odpovídajícím typem).

Příklady

Následující příklad obsahuje implementaci tohoto zpětného volání pro převod uložené hodnoty vlastnosti závislosti na základě jiných vstupů, jako je hodnota jiné vlastnosti. V tomto případě zpětné volání zkontroluje, jestli ShirtType vlastnost odpovídá typu košile, která obsahuje tlačítka. Pokud ano, vytvoří výchozí barvu pro ButtonColortyp košile , pokud typ košile nemá žádná tlačítka, převede ButtonColor hodnotu zpět na počáteční hodnotu, což způsobí, že uživatelské rozhraní (není zobrazeno) odebere tento rozevírací seznam z efektivní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í založená na CoerceValueCallback vlastnosti závislosti lze přiřadit několika různými technikami. Každá z těchto technik vyžaduje, abyste nejprve vytvořili nový objekt metadat vlastností (PropertyMetadatanebo odvozenou třídu, například FrameworkPropertyMetadata). Vytvořte objekt metadat pomocí podpisu konstruktoru coerceValueCallback , který přebírá 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 vložením metadat do použití.

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

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

Vlastnost CoerceValueCallback závislosti se vyvolá pokaždé, když systém vlastností nebo jakýkoli jiný volající volá CoerceValue instanci DependencyObject , která určuje identifikátor této vlastnosti jako dphodnotu .

Změny hodnoty vlastnosti mohly pocházet od libovolného možného účastníka v systému vlastností. To zahrnuje styly, obecnou neplatnou platnost, triggery, dědičnost hodnot vlastností a nastavení místní hodnoty.

Obecně byste se měli vyhnout zadání více než jedné pro libovolnou CoerceValueCallback vlastnost závislosti (přepsání nebo přidání s novými metadaty pro vlastnost závislosti, která již měla CoerceValueCallback). Bude moct jednat pouze jeden z zpětných volání. Volající zpětné volání bude ten, který byl použit u nejvíce odvozené třídy v dědičnosti ve srovnání s volajícím DependencyObject . Další zpětná volání přiřazená metadatům pro vlastnost závislosti, protože existovala v hierarchii vlastníka vyšší, se nahradí při přepsání metadat.

Metody rozšíření

Name Description
GetMethodInfo(Delegate)

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

Platí pro

Viz také