2009-09-09 18 views
8

winformsアプリケーションでIDataError情報を正しく使用できますか?過去に私は通常の方法でバインディングを行い(1)、特定のコントロールのOnValidatingイベントで検証を行いました。データ検証をドメインモデルに移行して、ユーザーインターフェイスを簡単に交換し、すべてのロジックを1か所にまとめることができます。winformsのIDataErrorInfo

私はIDataErrorInfoを調べていましたが、開発中のWPFとそのアプリケーションを扱うものはすべて厳密にwinformsアプリケーションです。

私は、WPFで使用されるバインディングがSystem.Windows.Dataにあり、常に使用していたバインディングがSystem.Windows.Formsにあることに気付きました(これは私がリソースとして追加しようとする - 私は3.5を使用しています。) "ValidatesOnDataErrors"プロパティの横に2つの違いがありますか?

ビーイング(1)通常の方法:

myControl.DataBindings.Add(new Binding("Text", this.domainModel, "Property")); 

答えて

9

これは、WindowsフォームのErrorProviderコンポーネントで機能します。

完全ではあるが非常に簡単で短いチュートリアルについては、this blog postを参照してください。

+0

+1素晴らしいブログ投稿。私の現在の悲しみをすべて治しました。どうもありがとうございました。 –

+4

素晴らしいブログポストへのリンク*のように見える*が壊れています:このリンクのみの回答は時代遅れです。 –

+0

@Bjørn-RogerKringsjåこれは実際にはリンクのみの回答ではありません。 'ErrorProvider'についての提案は、これをリンクなしの答えにします。 – Taryn

1

はい、リサイズでIDataErrorInfo作品。たとえば、DataGridViewは、行単位とセル単位で自動的にこれを使用します。しかし、それは実装固有であり、は自動的に他のバインディングに適用されません。私は一度、エラープロバイダーに関連付けるコードを書き、変更イベントを介して作業を行いましたが、残念ながら手渡すことはできません。しかし、私はそれが巨大ではなかったことを思い起こさせるようです。

関連する問題