DependencyProperty ValidateValueCallback Frage
Habe ich ein ValidateValueCallback zu einer DependencyProperty genannt A. Jetzt in der validate-Rückruf, Ein muss verglichen werden, um den Wert einer DependencyProperty genannt B. Aber wie kann man den Zugriff auf den Wert von B in die statische ValidateValueCallback Methode validateValue(object value)? Vielen Dank für jeden Tipp!
Beispielcode:
class ValidateTest : DependencyObject
{
public static DependencyProperty AProperty = DependencyProperty.Register("A", typeof(double), typeof(ValidateTest), new PropertyMetadata(), validateValue);
public static DependencyProperty BProperty = DependencyProperty.Register("B", typeof(double), typeof(ValidateTest));
static bool validateValue(object value)
{
//Given value shall be greater than 0 and smaller than B - but how to access the value of B?
return (double)value > 0 && value <= /* how to access the value of B ? */
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Validierung Rückrufe sind als sanity-checks für die angegebene input-Wert mit einem Satz von statischen Einschränkungen. In Ihrer Validierungs-callback-Prüfung für eine positive Wert ist die korrekte Anwendung der Prüfung, aber die Prüfung gegen eine andere Eigenschaft ist nicht. Wenn Sie brauchen, um einen vorgegebenen Wert kleiner ist als eine abhängige Eigenschaft, die Sie verwenden sollten Eigenschaft Zwang, etwa so:
Während dies nicht eine Ausnahme werfen, wenn Sie A > B (wie die ValidationCallback tut), das ist eigentlich das gewünschte Verhalten. Da Sie nicht wissen, in welcher Reihenfolge die Eigenschaften festgelegt werden, Sie sollten daher unterstützen die Eigenschaften, die festgelegt wird, in beliebiger Reihenfolge.
Müssen wir auch sagen, WPF zu zwingen, den Wert der Eigenschaft Ein, wenn der Wert von B ändert sich, als der erzwungene Wert könnte sich ändern: