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?
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.
Tags und Links wpf c# dependency-properties