0

ビューモデルからオブジェクトにバインドされるカスタムコントロールがあります。コントロールには独自の「ミニビューモデル」(raisedproperychangedとidataerrorinfoを実装)があり、特定の検証のためにコードの背後にあります。

このコントロールの内部で使用されるいくつかのプロパティがあり、コントロールが無効な状態になる可能性があります(これらのプロパティはコントロールに固有であり、バインドされているモデルのプロパティを表していません)。これらの検証エラーを「バブルアップ」させて、このコントロールにバインドされているプロパティに検証エラーがあると表示するにはどうすればよいですか?

より明確な例については。カスタムユーザーコントロールのpersonプロパティにバインドするpersonオブジェクトがあるとします。このコントロールを使用すると、人物のサブプロパティなどを編集できます。このコントロールには、ユーザーがコントロールによって作成されたダイアログを閉じるか、編集が終了したことを示すチェックボックスをクリックするまでコントロールが「無効」であるなど、通常は人物オブジェクトに適用されるもの以外の追加の検証があります。これらの検証エラーを伝播して、personプロパティへのバインドで検証エラー、より具体的にはそれを含むVMが表示されるようにします。

4

1 に答える 1

1

あなたはそれを間違った方法で持っています-コントロールはViewModelに値を設定し(バインディングを介して)、ViewModelは各フィールドを検証し、IDataErrorInfoを介してエラーメッセージを提供します。詳細については、http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/を参照してください。

于 2012-04-04T20:15:16.633 に答える