CoerceValueCallback Delegát

Definice

Poskytuje šablonu pro metodu, která je volána vždy, když je znovu vyhodnocována hodnota vlastnosti závislosti, nebo je vyžadována žádost o vynucení.Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.

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ém vlastnost existuje.The object that the property exists on. Po vyvolání zpětného volání bude tato hodnota předána systémem vlastností.When the callback is invoked, the property system will pass this value.

baseValue
Object

Nová hodnota vlastnosti před jakýmkoli pokusem o vynucení.The new value of the property, prior to any coercion attempt.

Návratová hodnota

Object

Předaná hodnota (s odpovídajícím typem).The coerced value (with appropriate type).

Dědičnost
CoerceValueCallback

Příklady

Následující příklad obsahuje implementaci tohoto zpětného volání pro převeďte uloženou hodnotu vlastnosti závislosti založenou na jiných vstupech, jako je například hodnota jiné vlastnosti.The following example includes an implementation of this callback to coerce the stored value of a dependency property based on other inputs, such as another property's value. V tomto případě zpětné volání kontroluje, zda ShirtType vlastnost odpovídá typu trička, která má tlačítka; Pokud je tedy pro typ trička nastavena počáteční výchozí barva, je ButtonColor hodnota převedena ButtonColor zpět na počáteční hodnotu, což způsobí, že Uživatelské rozhraníUI (není zobrazeno) odebrání tohoto rozevíracího seznamu z efektivní volby.In this case, the callback checks to see whether the ShirtType property corresponds to a type of shirt that has buttons; if so it establishes a starting default color for the ButtonColor, if the shirt type has no buttons, it coerces the ButtonColor value back to a starting value, which causes the Uživatelské rozhraníUI (not shown) to remove that dropdown from the effective choices.

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 objektu CoerceValueCallback lze přiřadit vlastnosti závislosti několika různými způsoby.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Každý z těchto postupů vyžaduje, abyste nejprve vytvořili nový objekt metadat vlastnosti ( PropertyMetadata nebo odvozenou třídu jako FrameworkPropertyMetadata ).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Vytvořte objekt metadat pomocí signatury konstruktoru, který převezme coerceValueCallback parametr, a přiřaďte tento parametr obslužné rutině zpětného volání.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Nebo vytvořte metadata pomocí jakéhokoli podpisu a nastavte CoerceValueCallback vlastnost před vložením metadat.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Když máte tato metadata, můžete:When you have this metadata, you can:

Implementace tohoto zpětného volání by měly kontrolovat hodnotu v baseValue a určovat na základě hodnoty nebo typu, ať už se jedná o hodnotu, která musí být dále převedena.Implementations of this callback should check the value in baseValue and determine based on either the value or the type whether this is a value that needs to be further coerced.

CoerceValueCallbackVlastnost for a Dependency je vyvolána kdykoli, když systém vlastností nebo jakékoli jiné volání volající CoerceValue DependencyObject instance Určuje identifikátor této vlastnosti jako dp .The CoerceValueCallback for a dependency property is invoked any time that the property system or any other caller calls CoerceValue on a DependencyObject instance, specifying that property's identifier as the dp.

Změny hodnoty vlastnosti mohou pocházet z libovolného možného účastníka v systému vlastností.Changes to the property value may have come from any possible participant in the property system. To zahrnuje styly, obecná neplatnost, triggery, dědičnost hodnot vlastností a nastavení místní hodnoty.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Obecně byste se měli vyhnout zadání více než jedné CoerceValueCallback Vlastnosti dané závislosti (přepsání nebo přidání s novými metadaty pro vlastnost závislosti, která již měla CoerceValueCallback ).Generally you should avoid specifying more than one CoerceValueCallback for any given dependency property (overriding or adding with new metadata for a dependency property that already had a CoerceValueCallback). Bude moci působit pouze jedno z zpětných volání. Fungující zpětné volání bude použito pro největší odvozenou třídu v dědičnosti v porovnání s DependencyObject volajícím.Only one of the callbacks will be able to act. The acting callback will be the one that was applied to the most derived class in the inheritance as compared to the DependencyObject caller. Další zpětná volání, která jsou přiřazena k metadatům pro vlastnost Dependency, jak byla vyšší v hierarchii vlastník, jsou nahrazena při přepsání metadat.Other callbacks as assigned to metadata for the dependency property as it existed higher in the owner hierarchy are replaced when the metadata is overridden.

Metody rozšíření

GetMethodInfo(Delegate)

Získává objekt, který představuje metodu reprezentovanou zadaným delegátem.Gets an object that represents the method represented by the specified delegate.

Platí pro

Viz také