拡張WPFToolKitのDecimalUpDownコントロール(v1.7)を使用しています。コントロールは、スピナーコントロールを使用する場合は期待どおりに動作しますが、テキストを直接編集する場合は動作しません。これは基本的なMVVMWPFアプリであり、コントロールは。という名前のViewModelのdecimalプロパティにバインドされていますCurrentWidth
。
ViewModelには、さまざまな検証ルールが適用されてCurrentWidth
います。プロパティの最後で、RaisePropertyChange("CurrentWidth");
値が検証されない場合、CurrentWidthが変更されないままになることがあります。
スピナーコントロールで変更を行うと、すべてのエラーチェック、値の元に戻すなどが機能します。ユーザーがボックスに直接テキストを入力した場合でも、検証は機能しますが、ボックスにはユーザーが入力した内容が表示されたままになります。デバッグ情報を送信すると、ValueプロパティとTextプロパティの両方に正しい変更されていない値がありますが、ボックスにはユーザーが入力した値が表示されます。LostFocusイベントハンドラーを追加InvalidateVisual()
して送信者コントロールを呼び出してみましたUpdateLayout()
が、コントロールをタブでオフにした後も、ユーザーが入力したテキストは表示されたままです。実際の現在の値を反映させる方法を知っている人はいますか?