속성이 업데이트된 후 데이터 바인딩된 개체에 대한 유효성 검사 수행

StackOverflow https://stackoverflow.com/questions/62686

문제

구현하는 개체에 데이터 바인딩된 컨트롤이 있는 기본 폼이 있습니다. INotifyPropertyChanged 상호 작용.몇 가지 속성에 유효성 검사를 추가하고 싶지만 구현을 진행하고 싶지 않습니다. IDataErrorInfo 몇 가지 속성의 유효성을 검사하기 위해.

유효성 검사를 수행하고 개체에 오류 메시지(해당하는 경우)를 반환하는 함수를 만들었습니다.내가 하고 싶은 것은 개체의 관련 속성이 변경되었을 때 내 양식에서 이러한 함수를 호출하고 오류 제공자 유효성 검사 함수에서 반환된 오류 메시지를 내 양식으로 제어합니다.

Validating 및 LostFocus 이벤트에 이벤트 핸들러를 연결하려고 시도했지만 이러한 이벤트는 내 개체가 업데이트되기 전에 실행되는 것 같아서 올바른 데이터의 유효성을 검사하지 않습니다.텍스트 상자를 떠날 때만 다시 들어가서 올바른 데이터에 대해 유효성 검사가 실행됩니다.

내 개체의 속성이 업데이트된 후 이러한 유효성 검사 함수를 호출할 수 있도록 연결할 수 있는 또 다른 이벤트가 있습니까?아니면 그냥 구현하는 것이 더 낫습니까? IDataErrorInfo 상호 작용?

도움이 되었습니까?

해결책

문제가 무엇인지 정확히 모르겠습니다. 컨트롤이 포커스를 잃을 때까지 속성을 설정할 수 없다는 말씀이신가요?

그렇다면 바인딩을 업데이트하도록 설정해야 합니다. OnPropertyChanged 대신에 OnValidation.

바인딩 대상 OnPropertyChanged 바인딩이 즉시 업데이트됨을 의미하지만 OnValidation 유효성 검사가 트리거될 때만 기본 개체를 업데이트합니다(대부분의 컨트롤은 포커스를 잃을 때 발생합니다).

다른 팁

Cameron의 게시물을 통해 문제에 대한 해결책을 찾은 것 같습니다.OnPropertyChanged를 업데이트하도록 바인딩을 변경했으며 이제 LostFocus 이벤트에 이벤트 핸들러를 연결할 때 이전에 개체에 보관된 값이 아닌 텍스트 상자의 "새" 값에 대해 유효성 검사가 수행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top