현재 IDataErrorInfo
인터페이스를 사용하여 WPF 응용 프로그램에서 유효성 검사를 구현하고 있습니다. 그 인터페이스의 일부입니다 인덱서과 같이, 하나의 속성을 확인 할 수 있습니다 : 유효성 검사 오류가 나는 옆에있는 텍스트 상자에 도구 설명에 별표 (*) 표시가 발생WPF에서 교차 속성 유효성 검사
public string this[string columnName]
{
get
{
switch (columnName)
{
case "LastName":
if (string.IsNullOrEmpty(this.LastName))
return "LastName must not be empty.";
break;
// case, case, case, etc., etc.
}
return null;
}
}
합니다.
하나의 속성과 엄격하게 관련이없는 유효성 검사 규칙을 가지고 있다면 어떻게해야합니까? 예를 들어 주문을 나타내는 도메인 엔터티에 출고 날짜와 송장 날짜가 있고 인보이스 일자가 배송일 이후 여야한다는 규칙을 확인하려면 어떻게해야합니까?
물론이 관계식을 columnName "ShippingDate"에 대해 한 번, columnName "InvoiceDate"에 대해 한 번씩 두 번 확인하여이 규칙을 강제로 인덱서에 적용한 다음 UI의 입력 필드에 별표가있는 오류를 표시 할 수도 있습니다 그래서 같은 :
public string this[string columnName]
{
get
{
switch (columnName)
{
case "ShippingDate":
case "InvoiceDate":
if (this.ShippingDate > this.InvoiceDate)
return "Invoice date must not be before shipping date.";
break;
}
return null;
}
}
하지만 인덱서 (인덱서는 무효 "하나의 속성 상태"를보고해야합니다)에서 "개체 수준"또는 독립적으로 "크로스 부동산"검증을 선호하고 그 객체를 표시 할 것 수준 또는 관계 오류를 UI에 별도로 표시합니다.
IDataErrorInfo
인터페이스의 Error
속성이 개체 수준 유효성 검사의 목적을 갖고 있기를 바랬습니다. 예를 들어 WPF는 TextBox의 Binding 표현식에 ValidatesOnDataErrors=True
을 지정할 때 속성 유효성 검사를 위해 인덱서를 호출합니다. 그러나 입력 필드에서 일부 데이터를 변경할 때마다 Error
속성을 호출하도록 WPF에 지시 할 수있는 방법을 찾지 못했습니다. 어쩌면이 부동산의 목적에 대한 내 추측이 틀렸을까요?
WPF에서 교차 속성 유효성 검사를 어떻게 구현할 수 있습니까?
미리 감사드립니다. 내 질문에 대해서는
여기에 일부 소스 코드를 제공 할 수 있습니까? 나는 같은 문제를 겪고있다 ... – Rob
@Rob : 나는 그 물건들이 어떻게 생겼는지 간단한 스케치를 추가했다. 위의 편집 2를 보아라. – Slauma