DependencyProperty ValidateValueCallback-Frage

8

Ich habe ValidateValueCallback zu einer DependencyProperty namens A hinzugefügt. Jetzt wird A im Validierungsrückruf mit dem Wert einer DependencyProperty namens B verglichen. Aber wie kann ich auf den Wert von B im static zugreifen? ValidateValueCallback-Methode validateValue (Objektwert)? Danke für einen Hinweis!

Beispielcode:

%Vor%     
stefan.at.wpf 16.06.2010, 16:02
quelle

1 Antwort

14

Validierungsrückrufe werden als Plausibilitätsprüfungen für den angegebenen Eingabewert gegen eine Reihe von statischen Einschränkungen verwendet. In Ihrem Validierungsrückruf ist das Überprüfen auf einen positiven Wert eine korrekte Verwendung der Überprüfung, aber nicht die Überprüfung mit einer anderen Eigenschaft. Wenn Sie sicherstellen müssen, dass ein bestimmter Wert kleiner als eine abhängige Eigenschaft ist, sollten Sie Property-Coercion , so:

%Vor%

Während dies keine Ausnahme auslöst, wenn Sie A & gt; B (wie der ValidationCallback), ist dies eigentlich das gewünschte Verhalten. Da Sie die Reihenfolge, in der die Eigenschaften festgelegt sind, nicht kennen, sollten Sie die Eigenschaften in einer beliebigen Reihenfolge unterstützen.

Wir müssen WPF auch mitteilen, den Wert von Eigenschaft A zu erzwingen, wenn sich der Wert von B ändert, da sich der erzwungene Wert ändern könnte:

%Vor%     
Abe Heidebrecht 16.06.2010, 17:31
quelle