私の問題を説明する前に: これSlider
は、次の問題の単なる例です。私はスライダーがここで行うのと非常によく似たことをしなければならないカスタムコントロールに取り組んでいます:
シナリオ:
Slider.Value
というViewModel プロパティにをバインドしましたMyValue
。- の を と定義しまし
Maximum
た。Slider
100
- 次に、プロパティ
MyValue
をに設定し200
ます。
何が問題ですか?
- Slider は内部的に値を強制的に 100 にします。
- しかし、プロパティ
MyProperty
は更新されていません。 - 私の場合 (私が作成したカスタム コントロール)、後で古い (200) 値ではなく、強制された値 (100) を続行する必要があります。
質問:
カスタム コントロールでできることはありますか?
たとえば、私は と の両方で試しましmyControl.GetExpression(MyValueProperty).UpdateSource();
たが、何を試しても、バインドされた ViewModel プロパティのセッターは決して呼び出されず、プロパティは同期されません。CoerseValueCallback
PropertyChangedCallback