CoerceValueCallback Delegat
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
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
Das Objekt, für das die Eigenschaft vorhanden ist. Wenn der Rückruf aufgerufen wird, übergibt das Eigenschaftensystem diesen Wert.
- baseValue
- Object
Der neue Wert der Eigenschaft vor einem Umwandlungsversuch.
Rückgabewert
Der umgewandelte Wert (mit dem entsprechenden Typ).
Beispiele
Das folgende Beispiel enthält eine Implementierung dieses Rückrufs, um den gespeicherten Wert einer Abhängigkeitseigenschaft basierend auf anderen Eingaben wie dem Wert einer anderen Eigenschaft zu koerzen. In diesem Fall überprüft der Rückruf, ob die ShirtType
Eigenschaft einem Typ von Hemd entspricht, das Schaltflächen enthält. Wenn dies der Fall ist, wird eine Startstandardfarbe für den ButtonColor
Hemdtyp ohne Schaltflächen eingerichtet, wird der ButtonColor
Wert wieder auf einen Startwert zurückgerufen, wodurch die Benutzeroberfläche (nicht angezeigt) diese Dropdownliste aus den effektiven Auswahlmöglichkeiten entfernen kann.
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 einer Abhängigkeitseigenschaft können über mehrere verschiedene Techniken zugewiesen werden. Jede dieser Techniken erfordert, dass Sie zuerst ein neues Eigenschaftsmetadatenobjekt (PropertyMetadataoder eine abgeleitete Klasse wie z FrameworkPropertyMetadata. B. ) erstellen. Erstellen Sie das Metadatenobjekt mithilfe einer Konstruktorsignatur, die den coerceValueCallback
Parameter verwendet, und weisen Sie diesen Parameter Ihrem Rückrufhandler zu. Oder erstellen Sie die Metadaten nach jeder Signatur, und legen Sie die CoerceValueCallback Eigenschaft fest, bevor die Metadaten verwendet werden.
Wenn Sie über diese Metadaten verfügen, können Sie Folgendes ausführen:
Definieren Sie eine neue Abhängigkeitseigenschaft für eine neue Klasse, indem Sie beide Signaturen Registerverwenden, und geben Sie die Metadaten als
typeMetadata
Wert.Überschreiben Sie die Metadaten (Aufruf OverrideMetadata(Type, PropertyMetadata)) für eine vorhandene Abhängigkeitseigenschaft, wenn Sie von der Klasse abgeleitet werden, die die Abhängigkeitseigenschaft besitzt.
Fügen Sie eine vorhandene Abhängigkeitseigenschaft zu einer neuen DependencyObject Klasse hinzu, indem Sie neue Metadaten verwenden, indem Sie aufrufen AddOwner(Type, PropertyMetadata).
Implementierungen dieses Rückrufs sollten den Wert überprüfen und anhand des Werts baseValue
oder des Typs ermitteln, ob es sich um einen Wert handelt, der weiter gekoerdet werden muss.
Die CoerceValueCallback für eine Abhängigkeitseigenschaft wird jedes Mal aufgerufen, wenn das Eigenschaftssystem oder ein anderer Aufrufer eine DependencyObject Instanz aufruftCoerceValue, wobei der Bezeichner dieser Eigenschaft als die dp
.
Änderungen am Eigenschaftswert können von jedem möglichen Teilnehmer im Eigenschaftssystem stammen. Dazu gehören Formatvorlagen, generische Ungültigheit, Trigger, Eigenschaftswertvererbung und lokale Werteinstellung.
Im Allgemeinen sollten Sie vermeiden, mehrere CoerceValueCallback für eine bestimmte Abhängigkeitseigenschaft anzugeben (außer Kraft setzen oder mit neuen Metadaten für eine Abhängigkeitseigenschaft hinzufügen, die bereits eine CoerceValueCallback) Nur eine der Rückrufe kann handeln. Der handelnde Rückruf ist das Element, das im Vergleich zum DependencyObject Aufrufer auf die am meisten abgeleitete Klasse in der Vererbung angewendet wurde. Andere Rückrufe, die Metadaten für die Abhängigkeitseigenschaft zugewiesen sind, wie sie höher in der Besitzerhierarchie vorhanden sind, werden ersetzt, wenn die Metadaten außer Kraft gesetzt werden.
Erweiterungsmethoden
GetMethodInfo(Delegate) |
Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird. |