今のところ私のモデルにこのメソッドを追加しました。
public Boolean IsModelValid()
{
Boolean isValid = true;
PropertyInfo[] properties = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo p in properties)
{
if (!p.CanWrite || !p.CanRead)
{
continue;
}
if (this[p.Name] != null)
{
isValid = false;
}
}
return isValid;
}
それが変化したとき、私は、私は、このメソッドを呼び出し、その結果は私の実際のパブリックメンバーと異なる場合、私はそれを更新し、PropertyChangedイベントに
public MyClassName()
{
PropertyChanged += CheckModelValidity;
CheckModelValidity(null, null);
}
をオブジェクト自体をバインド:
private void CheckModelValidity(object sender, PropertyChangedEventArgs e)
{
bool isModelValid = IsModelValid();
if(isModelValid!= IsValid)
{
IsValid = isModelValid;
}
}
次に、IsValidプロパティをバインドできます。
もっと良い解決策があるのでしょうか?このスタイルにあなたの実装を変更IDataErrorInfo
の実装上のあなたのコメントから
出典
2012-11-28 12:24:25
J4N
エラープロパティがnullまたは空でない場合エラーが発生します –
どこが妥当なのかを知りたいですか?ビューまたはViewModelで – Blachshma
私はこれの答えがあなたを助けるかもしれないと思います:http://stackoverflow.com/questions/104520/wpf-validation-for-the-whole-form –