どこに実装するかの決定は、IDataErrorInfo
実際にはアプリケーションのロジックによって異なります。たとえば、Phone
無効な電話番号を許可しない方法でクラスを実装することができますが、ビューモデルでは米国からの番号のみを許可したいと考えています。
通常、IDataErrorInfo
モデルとビューモデルの両方に実装することをお勧めします。ビューモデルでエラーが検出されなかった場合は、リクエストをモデルに転送します。次に、通常どおりビューモデルにバインドします。
public string this[string propertyName]
{
get
{
if (propertyName == "PhoneNumber")
{
if (!IsUSNumber(PhoneNumber))
{
return "Non-US number.";
}
}
// No validation errors found by the viewmodel
// Forward to model's IDataErrorInfo implementation
return Model[propertyName];
}
}
電話番号の形式など、すべての電話に関連する基本的な検証をモデルに実装し、ビューモデルにビューごとに異なる可能性のあるビュー固有の検証を実装することをお勧めします。たとえば、米国の電話番号または所属する番号のみを許可するなどです。特定のプロバイダーに。