나는 하나 개의 형태로 간단한 윈폼 응용 프로그램, 몇 가지 컨트롤과 같이 정의 된 비즈니스 개체가 : 내 양식에유효하지 않은 입력란이 비즈니스 개체 속성에 바인딩되지 않도록 하시겠습니까?
public class BusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private string _phoneNumber;
public string PhoneNumber
{
get { return _phoneNumber; }
set
{
if (_phoneNumber == value)
{
return;
}
_phoneNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("PhoneNumber"));
}
}
을, 나는 바인딩 소스를 통해 PHONENUMBER 속성에 바인딩 된 텍스트 상자를 가지고 데이터 원본 업데이트 모드는 OnPropertyChanged로 설정됩니다. 이것은 모두 예상대로 작동합니다. 내 비즈니스 객체의 PhoneNumber 속성에 할당되기 전에 텍스트에 대한 유효성 검사를해야합니다. 나는이 텍스트 상자에 대한 Validating 이벤트 처리기에서 할 것이라고 생각하고 입력이 잘못된 경우 오류 공급자 표시 및 e.Cancel 설정할 true =. 불행히도, 이것은 유효하지 않은 입력이 PhoneNumber 속성에 바인딩되는 것을 막아주지는 않습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?
업데이트 모드를 OnPropertyChanged로 설정 했으므로 모든 키 스트로크에서 데이터가 개체로 푸시됩니다. 검증 로직을 어떻게 처리합니까? 사용자가 유효성을 검사하기 전에 번호 입력을 마칠 때까지 기다리지 않아도됩니까? –
당신은 절대적으로 맞습니다. :-(텍스트 상자는 사용자가 형식이 지정되지 않은 전화 번호 (형식이 지정되지 않음, 숫자, 아니오 기호, 대시, 팸 등)를 입력하기위한 것입니다. 현재 어떤 종류의 입력도 keydown 또는 keypress 그래서 ABC를 입력하면 받아 들일 수 있습니다. 그리고 OnPropertyChanged를 사용하여 유효성을 검사하기 전에 입력이 각 키스트 로크의 개체로 푸시됩니다. 업데이트 모드를 사용해야한다고 생각합니다. 이 텍스트 상자에 대한 OnValidation? – user685869