는 IDataErrorInfo
을 구현하는 곳의 결정은 정말 응용 프로그램의 로직에 따라 달라집니다. 예를 들어 Phone
클래스에서 유효하지 않은 전화 번호를 허용하지 않는 방식으로 구현할 수 있지만, 뷰 모델에서는 미국 전화 번호 만 허용하려고합니다.
일반적으로 좋은 연습은 model과 viewmodel 모두에 IDataErrorInfo
을 구현하는 것이며, viewmodel에서 오류가 발견되지 않은 경우 요청을 모델로 전달하십시오. 그런 다음 평상시처럼 뷰 모델에 바인딩합니다.
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];
}
}
내가 모델이 전화 번호 형식처럼, 모든 전화를위한 관련된 기본적인 검증을 구현하고, 뷰 모델은에만 허용으로 볼보기에 따라 다를 수있는 뷰 특정 검증을 구현해야하는 것이 좋 특정 공급자에게 속한 미국 전화 번호 또는 번호.
좋은 설명, 특히 이해하기 쉽고 구체적인 사용 예를 사용하십시오. 감사. –