http://msdn.microsoft.com/en-us/magazine/dd419663.aspxの記事で Josh Smith が説明しているように、MVVM パターンを使用して WPF アプリケーションを開発しています。
Convert Back エラーに対応する適切な方法がわかりません (たとえば、ユーザーが double にバインドされたテキスト ボックスに文字を入力した場合など)。
Josh Smith は、モデルがそれ自身の値を検証し、SomeModel.IsValid を通じてブール値の結果を提示する検証システムを提案しています。次に、Josh は IsValid の値を特定のボタン (フォームの [保存] ボタンなど) の述語として使用します。フォームが有効に入力されていない場合、IsValid は false になり、[保存] ボタンは無効になります。
この方法は本当にうまくいきます。ただし、ユーザーが変換できない値をテキスト ボックスに入力すると、ConvertBack エラーが発生します。プロパティの ViewModel のセッターは呼び出されないため、Model のプロパティは更新されません。IsValid は true のままです。ビューはエラー メッセージを表示し、エラー (または設定が何であれ) を強調表示することによって検証エラーに応答しますが、モデルが更新されていないため、モデルの IsValid プロパティがまだ true であるため、[保存] ボタンはアクティブなままです。 .
これと同じ課題を経験した MVVM ユーザーはいますか? 何か案は?
1 つの提案は、モデルのプロパティが Nullable になる可能性があることです。次に、ユーザーが変換不可能な日付 (ダブルにバインドされたテキスト ボックス内の文字など) を入力した場合、コンバーターはソースを Null に設定する必要があります。ただし、これを行う簡単な方法を見つけることができませんでした-機能が必要なすべてのデータ型と、必要な数値形式ごとにカスタムコンバーターを作成する必要があるようです。デザインチャレンジ。
何か案は?