1 つのフォーム、いくつかのコントロール、および次のように定義されたビジネス オブジェクトを含む単純な winforms アプリがあります。
public class BusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private string _phoneNumber;
public string PhoneNumber
{
get { return _phoneNumber; }
set
{
if (_phoneNumber == value)
{
return;
}
_phoneNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("PhoneNumber"));
}
}
私のフォームには、バインディング ソースを介して PhoneNumber プロパティにバインドされたテキスト ボックスがあり、データ ソースの更新モードは OnPropertyChanged に設定されています。これはすべて期待どおりに機能します。ビジネス オブジェクトの PhoneNumber プロパティにテキストを割り当てる前に、テキストを検証する必要があります。テキスト ボックスの Validating イベント ハンドラーでこれを行うと考え、入力が無効な場合は、エラー プロバイダーを表示し、e.Cancel = true に設定します。残念ながら、これは無効な入力が PhoneNumber プロパティにバインドされるのを防ぎません。これを行う簡単な方法はありますか?