Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

CoerceValueCallback-Delegat

 

Veröffentlicht: Oktober 2016

Enthält eine Vorlage für eine Methode, die aufgerufen wird, wenn der Wert einer Abhängigkeitseigenschaft erneut ausgewertet wird oder Umwandlung speziell angefordert wird.

Namespace:   System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)

public delegate object CoerceValueCallback(
	DependencyObject d,
	object baseValue
)

Parameter

d
Type: System.Windows.DependencyObject

Das Objekt, dem die Eigenschaft vorhanden ist. Wenn der Rückruf aufgerufen wird, übergibt das Eigenschaftensystem diesen Wert.

baseValue
Type: System.Object

Der neue Wert der Eigenschaft vor einem Umwandlungsversuch.

Rückgabewert

Type: System.Object

Der umgewandelte Wert (mit dem entsprechenden Typ).

Rückrufe basierend auf CoerceValueCallback können einer Abhängigkeitseigenschaft mithilfe verschiedener Techniken zugewiesen werden. Jede dieser Techniken, müssen Sie zunächst ein neues Objekt für Eigenschaftenmetadaten erstellen (PropertyMetadata, oder eine abgeleitete Klasse wie z. B. FrameworkPropertyMetadata). Erstellen Sie das Metadatenobjekt unter Verwendung einer Konstruktorsignatur, akzeptiert der coerceValueCallback -Parameter, und weisen Sie diesen Parameter dem Rückrufhandler. Oder erstellen Sie die Metadaten durch eine beliebige Signatur und Festlegen der CoerceValueCallback -Eigenschaft vor dem Bereitstellen der Metadaten verwendet.

Wenn Sie diese Metadaten haben, können Sie:

  • Definieren eine neuen Abhängigkeitseigenschaft für eine neue Klasse unter Verwendung einer Signatur von Register, wobei die Metadaten als die typeMetadata Wert.

  • Überschreiben der Metadaten (Aufrufen OverrideMetadata(Type, PropertyMetadata)) für eine vorhandene Abhängigkeitseigenschaft, wenn Sie von der Klasse ableiten, die die Abhängigkeitseigenschaft besitzt.

  • Hinzufügen einer vorhandenen Abhängigkeitseigenschaft zu einer neuen DependencyObject -Klasse mit neuen Metadaten durch Aufrufen von AddOwner(Type, PropertyMetadata).

Die Implementierung von diesem Rückruf überprüfen Sie den Wert baseValue und bestimmen Sie basierend auf den Wert oder den Typ, ob dies ein Wert, der weitere umgewandelt werden muss.

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 den Bezeichner dieser Eigenschaft als die dp.

Änderungen an den Wert der Eigenschaft können von jedem möglichen Teilnehmer im Eigenschaftensystem stammen. Dies schließt die Stile, generische Ungültigkeit, Trigger, die Vererbung von Eigenschaftswerten und lokale Einstellung.

Im Allgemeinen sollten Sie vermeiden, mehr als eine CoerceValueCallback für eine angegebenen Abhängigkeitseigenschaft (überschreiben oder hinzufügen mit neuen Metadaten für eine Abhängigkeitseigenschaft, die bereits eine CoerceValueCallback). Nur einer der Rückrufe werden bearbeiten können. Der Rückruf ist diejenige, die am stärksten abgeleitete Klasse in der Vererbung im Vergleich zu zugewiesen wurde die DependencyObject Aufrufer. Andere Rückrufe höher in der vorhandenen Metadaten für die Abhängigkeitseigenschaft zugeordnet werden ersetzt, wenn die Metadaten überschrieben wird.

Das folgende Beispiel enthält eine Implementierung dieses Rückrufs, um den gespeicherten Wert einer Abhängigkeitseigenschaft auf Grundlage anderer Eingaben, z. B. eine andere Eigenschaft-Wert umgewandelt werden. In diesem Fall überprüft der Rückruf finden Sie unter, ob die ShirtType Eigenschaft entspricht einer "Shirt", die Schaltflächen; ggf. richtet eine anfängliche Standardfarbe für die ButtonColor, weist der Typ "Shirt" keine Schaltflächen, wandelt die ButtonColor Wert zurück, der einen Startwert, wodurch die UI (nicht gezeigt), Dropdown-Liste die richtige Auswahl aufheben.

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;
}

.NET Framework
Verfügbar seit 3.0
Zurück zum Anfang
Anzeigen: