CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

Definition

Stellt eine Vorlage für eine Methode bereit, die aufgerufen wird, wenn der Wert einer Abhängigkeitseigenschaft erneut ausgewertet wird oder wenn ausdrücklich eine Umwandlung angefordert wird.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 

Parameter

d
DependencyObject DependencyObject DependencyObject DependencyObject

Das Objekt, für das die Eigenschaft vorhanden ist.The object that the property exists on. Wenn der Rückruf aufgerufen wird, übergibt das Eigenschaftensystem diesen Wert.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

Der neue Wert der Eigenschaft vor einem Umwandlungsversuch.The new value of the property, prior to any coercion attempt.

Rückgabewert

System.Object

Der umgewandelte Wert (mit dem entsprechenden Typ).The coerced value (with appropriate type).

Vererbung
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

Beispiele

Das folgende Beispiel schließt eine Implementierung dieses Rückrufs aus, um den gespeicherten Wert einer Abhängigkeitseigenschaft, die basierend auf anderen Eingaben, z. B. eine andere Eigenschaft-Wert umgewandelt werden soll.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. In diesem Fall überprüft der Rückruf finden Sie unter, ob die ShirtType Eigenschaft, die für einen Typ von "Shirt", die Schaltflächen entspricht; Wenn dies der Fall wird eine ab Standardfarbe für die ButtonColor, weist der Typ "Shirt" keine Schaltflächen, wandelt die ButtonColor Wert an einen Startwert, der bewirkt, dass die UIUI (nicht abgebildet) dieser Dropdownliste aus den Optionen wirksamen zu entfernen.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 UIUI (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

Hinweise

Rückrufe basierend auf CoerceValueCallback kann auf eine Abhängigkeitseigenschaft über mehrere verschiedene Verfahren zugewiesen werden.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Jede dieser Techniken, müssen Sie zunächst ein neues Objekt für Eigenschaftenmetadaten erstellen (PropertyMetadata, oder eine abgeleitete Klasse wie z. B. FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Erstellen Sie das Metadatenobjekt, das mit einem Konstruktorsignatur, akzeptiert die coerceValueCallback Parameter, und weisen Sie diesen Parameter an den Rückrufhandler.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Oder erstellen Sie die Metadaten jeder Signatur sowie die Gruppe der CoerceValueCallback Eigenschaft vor dem Einfügen der Metadaten verwendet.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Wenn Sie diese Metadaten haben, können Sie folgende Schritte ausführen:When you have this metadata, you can:

  • Definieren Sie eine neue Abhängigkeitseigenschaft auf eine neue Klasse mit einer Signatur von Register, wobei die Metadaten als die typeMetadata Wert.Define a new dependency property on a new class, using either signature of Register, giving the metadata as the typeMetadata value.

  • Überschreiben Sie die Metadaten (Aufrufen OverrideMetadata(Type, PropertyMetadata)) für eine vorhandene Abhängigkeitseigenschaft, wenn Sie von der Klasse ableiten, die die Abhängigkeitseigenschaft besitzt.Override the metadata (call OverrideMetadata(Type, PropertyMetadata)) for an existing dependency property, when you derive from the class that owns the dependency property.

  • Fügen Sie eine vorhandene Abhängigkeitseigenschaft auf einen neuen DependencyObject -Klasse unter Verwendung der neuen Metadaten, durch den Aufruf AddOwner(Type, PropertyMetadata).Add an existing dependency property to a new DependencyObject class, using new metadata, by calling AddOwner(Type, PropertyMetadata).

Implementierungen von diesem Rückruf überprüfen Sie den Wert baseValue und bestimmen Sie basierend auf den Wert oder der Typ, ob es sich um einen Wert handelt, die weitere umgewandelt werden muss.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.

Die CoerceValueCallback für eine Abhängigkeit Eigenschaft wird immer dann aufgerufen, die das Eigenschaftensystem oder ein anderer Aufrufer ruft CoerceValue auf eine DependencyObject Instanz, die den Bezeichner dieser Eigenschaft als angeben der 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.

Änderungen an den Wert der Eigenschaft können von jedem möglichen Teilnehmer im Eigenschaftensystem stammen.Changes to the property value may have come from any possible participant in the property system. Dies schließt die Stile, generische invalidierung, Trigger, die Vererbung von Eigenschaftswerten und lokalen Wert festlegen.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Im Allgemeinen sollten Sie mehrere angegeben CoerceValueCallback für einen angegebenen Abhängigkeitseigenschaft (überschreiben oder neue Metadaten für eine Abhängigkeitseigenschaft, die bereits Hinzufügen einer 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). Nur eine der Rückrufe werden bearbeiten können. Rückruf verkürzt werden kann, die auf die am stärksten abgeleitete Klasse in der Vererbung im Vergleich zu angewendet wurde die DependencyObject Aufrufer.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. Anderen Rückrufe, die Metadaten für die Abhängigkeitseigenschaft zugewiesen werden soll, wie sie höher vorhanden, in der Besitzerhierarchie Waren werden ersetzt, wenn die Metadaten überschrieben wird.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.

Extension Methods

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

Ruft ein Objekt, das die durch den angegebenen Delegaten dargestellte Methode darstellt.Gets an object that represents the method represented by the specified delegate.

Gilt für:

Siehe auch