Was ist nötig, um eine Abhängigkeitseigenschaft zu erzwingen?

8

Ich habe ein Beispiel mit 2 Abhängigkeitseigenschaften gesehen:

%Vor%

und

%Vor%

und in OnCurrentReadingChanged führe ich folgende Operation aus d.CoerceValue(MinReadingProperty);

ruft den CoerceValueCallback-Delegaten ("CoerceMinReading") auf, der folgenden Code hat:

%Vor%

Was ich verstehen will ist, warum muss ich Zwang ausüben?

Warum kann ich SetValue nicht einfach in meiner Eigenschaft Callback aufrufen und die erforderlichen Eigenschaften ändern, anstatt CoerceValue aufzurufen und Dinge in meinem Coerce-Callback zu behandeln?

    
Rohan Gurjar 21.05.2015, 16:43
quelle

1 Antwort

9

Mit der Option "Zwang" können Sie (optional) sicherstellen, dass ein Wert in Situationen gültig ist, in denen die UI-Schicht diese Entscheidungen treffen kann. Ein klassisches Beispiel ist eine Art Schieberegler, bei dem eine gebundene Eigenschaft versucht, den Wert außerhalb des angegebenen Bereichs des Schiebereglers festzulegen. In diesem Fall ist es akzeptabel, den Wert ito minimal oder maximal zu "klammern", anstatt Validierungsausnahmen zu werfen.

Das Aufrufen von SetValue während einer SetValue-Eigenschaftsänderung ist nicht effizient, da Sie das System möglicherweise mit rekursiven Ereignissen überfluten. Deshalb existiert Zwang. Denken Sie nur an seine Grenzen und verwenden Sie sie gegebenenfalls. In diesem Fall ist es angebracht.

    
James Lucas 21.05.2015 16:58
quelle

Tags und Links