2012-04-10 11 views
0

私はビューフィールド内のdoubleプロパティにバインドされたテキストボックスを持つビューを持っています。 WPFまたはMVVMを使用するか、テキストボックスに無効なデータを入力すると、ユーザーに視覚的な表示(コントロールの周囲の赤色のボックス)を表示するのに適しています。この場合のinvalidaデータは、doubleに変換されず、viewmodelのプロパティと同期化されたデータを意味します。テキストボックスのテキストはviewmodelプロパティにバインドされています - ビューの無効なデータ状態を検出します

ビューのコントロールにバインドされなくなったデータがあるときに、これを検出することができます。私はlimit what the user can type in via code behindができると知っていますが、私はそれをしたいとは思いません。

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

xamlにバインドの問題を引き起こすユーザー入力を拒否するスマートで簡単な方法はありますか?

コントロールの周囲に赤色のボックスが表示されるテキストボックスのバインディングプロパティは何ですか?また、テキストボックスのバインディングステータスに失敗する可能性があります。

すべてのバインディングを再帰的にチェックして、データがビューモデルと同期していることを確認し、有効であるか、一部のオブジェクトが同期していないことを、ビュー/ウィンドウ/レイアウト/バインドされたデータの一部が無効であるためにバインドが行われていませんか?

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

私の最後の啓示はさておき、誰も質問に熱いヒントを持っていますか?

ありがとうございます。

答えて

0

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

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

+0

このような戦術の組み合わせのように見えるのは、最も強力なソルトインです。私はIDataErrorInfoについて知らなかった! –

0

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

関連する問題