5
public class Person
{
public string Name { get; set; }
private int _age;
public int Age
{
get { return _age; }
set
{
if(value < 0 || value > 150)
throw new ValidationException("Person age is incorrect");
_age = value;
}
}
}
次に、このクラスのバインディングを設定します。
txtAge.DataBindings.Add("Text", dataSource, "Name");
ここで、私がテキストボックスの値を修正するまで、セッターの中にあるものは飲み込まれ、私は何もすることができません。私は、テキストボックスがフォーカスを失うことができないことを意味します。それはすべて静かです。エラーはありません。値を修正するまで、何もできません(フォームやアプリケーション全体を閉じることさえできます)。
これはバグのようですが、問題は次のようなものです:これに対する回避策は何ですか?
IDataErrorInfoを実装するのではなく、例外をスローする理由はありますか?私は、後者はWinFormsの方が慣れ親しんだアプローチだと思っています(WPFでもうまくいきます)。 –