2011-09-13 17 views
0

私はビジネスオブジェクトの異なるプロパティにバインドされている多くの異なるコントロールを持つac#winformsアプリケーションを持っています(このオブジェクトはINotifyPropertyChangedを実装しています) 。私のユーザが特定のコントロールを特定の値に設定すると、(コード内の)別のプロパティの値を変更し、おそらくそのプロパティにバインドするコントロールを無効にする必要があります。たとえば、datetimeプロパティにマップするdatetimepickerがあります。ユーザーが00:10:00(HH:MM:SS)より小さい時間値を入力した場合、チェックボックス(boolプロパティにバインドされている)のチェックを外す必要があります。現在、私はdatetimepickerの値を調べ、.Hour == 0と.Minute < 10の場合、プログラムでboolプロパティの値を設定します(チェックボックスがバインドされている) falseに等しいこれを行うと、チェックボックスはオフになりますが、datetimepickerの値は、最初にブール値プロパティがfalseに設定された時刻をユーザーが入力する前の値に戻ります。他のコントロールで選択した値の結果としてバインドされたプロパティをプログラムで設定する

は私がオブジェクトに戻ってDateTimePickerの値を強制的に何かをする必要があります:私は、デバッガ内のDateTimePickerの値を見れば

、それがこのコード行が実行されるとすぐにリセットされますプロパティをプログラムで設定する前に、booleanプロパティをfalseに設定しますか?それとも私はこれについて間違っているのだろうか?他のバインドされたコントロールに影響を与える可能性のあるバインドされたコントロールを処理する必要がありますか?

答えて

1

Validatingの前に、のデータがバインドされたオブジェクトに返されます。その目的は、ビジネスロジックに応じて有効なデータがコントロールに含まれていることを確認し、通常の(非検証の)ロジックを処理するために使用することで、表示されているような問題が発生する可能性があります。

boolプロパティを設定するプロパティの設定者にコードを追加するのが最善の方法です。

+0

こんにちはアダム。提案していただきありがとうございます。いい考えだ! – user685869

+0

@user:聞いて嬉しいです! –

関連する問題