0

ビューモデルの double プロパティにテキスト ボックスがバインドされたビューがあります。WPF や MVVM など、ユーザーがテキスト ボックスに無効なデータを入力したときに視覚的な表示 (コントロールの周りの赤いボックス) を表示するのに十分なもの。この場合の無効なデータとは、double に変換できず、viewmodel のプロパティと同期できないデータを意味します。

私がやりたいのは、ビューのコントロールにデータが含まれていて、それらがバインドされなくなったことを検出することです。コードビハインドを介してユーザーが入力できる内容を制限できることは知っていますが、それをやりたいかどうかはわかりません。

また、すべてのコントロールが必要なデータ型であることを検証するコントロール データ検証メソッドを作成できることも知っていますが、必要がない限り、それは行いません。

バインドの問題を引き起こすユーザー入力を許可しないように xaml に指示するスマートで簡単な方法はありますか?

状態がコントロールの周りに赤いボックスを引き起こすテキストボックスのバインディングプロパティは何ですか?または、テキストボックスの失敗したバインディングステータスを取得するにはどうすればよいですか?

すべてのバインディングを再帰的にチェックして、データがビューモデルと同期されているため有効であること、または一部のオブジェクトが同期されておらず無効であることを確認する、ビュー/ウィンドウ/レイアウト/パネル全体に対して行うことができる抜本的な呼び出しはありますか?バインドされたデータの一部が無効なため、バインドだけが行われていませんか?

今、ある考えが浮かびます。ビューモデルがビュー用に構築されている場合、高さや幅などのプロパティの文字列を作成する必要がありますか? 有効であるためには double でなければなりませんが、これらはユーザーが入力できる値です。これにより、残りのオブジェクトの状態を検証するのと同じ方法でプロパティを検証できます。

私の最後の啓示はさておき、私がここに持っている質問について誰かがいくつかのホットなヒントを持っていますか?

プロに感謝します。

4

2 に答える 2

0

ValidationRules を使用してみてください。次に、値が文字列または数値の場合、検証クラスで条件を実行します。

于 2013-09-09T08:55:05.477 に答える
0

プロパティに文字列型を使用し、IDataErrorInfo を使用して入力をチェックします。良いことは、拘束力のある例外がなく、ビューとビューモデルが常に同期していることです。

ただし、コントロールにマスクされた動作を使用することもできるため、ユーザーはバインディングエラーを発生させない値を入力するだけで済みます。

于 2012-04-11T08:26:00.187 に答える