3

입력 형식이 잘못된 경우 Silverlight DataGrid에서 기본 오류 메시지를 변경하려고합니다. 예를 들어 숫자 필드에 글자를 입력합니다. 탭을 탭하면 "입력 형식이 올바르지 않습니다."라고 표시됩니다. 이 문제를 해결하는 방법을 살펴 보았습니다. 유효성 검사 속성을 사용자 지정 오류 메시지와 함께 넣는 것입니다. 문제는 내 물건이 RIA 서비스에서 오는 것입니다. 내 유효성 검사 특성에서 내 사용자 지정 오류 메시지를 무시하는 것 같습니다. 이 일을 폭로하기 위해 내가해야 할 일이 있습니까? 미리 감사드립니다.기본값 "입력이 올바른 형식이 아닙니다."RIA 서비스의 유효성 검사 오류

답변

1

오류가 컨트롤이 아닌 속성에서 발생하기 때문에 유효성 검사 속성/메타 데이터 속성이 도움이되지 않습니다. 문자열 값을 전송할 수 없기 때문에 컨트롤에서 int (또는 다른 숫자 유형)의 setter를 호출 할 수 없습니다.

public class NumericTextBox : TextBox 
{ 
    public NumericTextBox() 
    { 
     this.KeyDown += new KeyEventHandler(NumericTextBox_KeyDown); 
    } 

    void NumericTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Back || e.Key == Key.Shift || e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.Delete) 
      return; 

     if (e.Key < Key.D0 || e.Key > Key.D9) 
     { 
      if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9) 
      { 
        e.Handled = true; 
      } 
     } 
    } 
} 
0

: 가능한 해결 방법 이런 식으로 뭔가를 보이는 숫자 만 입력 할 수있는 사용자 정의 텍스트 상자를 사용하는 것입니다

나는 또한 기본 오류 메시지를 변경할 수 있습니다 알고 싶습니다 ... 유일한 해결책은 다음과 같습니다 (클라이언트 쪽).

public partial class MyEntity   
{ 
    public string MyField_string 
    { 
     get 
     { 
      return MyField.ToString(); 
     } 
     set 
     { 
      decimal res = 0; 
      var b = Decimal.TryParse(value, out res); 
      if (!b) 
       throw new ArgumentException("Localized message"); 
      else 
       this.MyField = Math.Round(res, 2); 
     } 
    } 

    partial void OnMyFieldChanged() 
    { 
     RaisePropertyChanged("MyField_string"); 
    } 
} 

그런 다음 MyField 대신 MyField_string에 바인딩하십시오.