2014-07-20 1 views
0
public string TenNguoiDung 
{ 
    get { return _currentNguoiDung.TenNguoiDung; } 
    set 
     { 
     _currentNguoiDung.TenNguoiDung = value != null 
      ? value.ToStandardString(true) : string.Empty; 
     SendPropertyChanged("TenNguoiDung"); 
     ValidProperty(_currentNguoiDung.TenNguoiDung, new 
      ValidationContext(_currentNguoiDung) { MemberName = "TenNguoiDung" }); 
     } 
} 

public static string ToStandardString(this string value, 
             bool isAllStartWithUpper = false) 
{ 
    string result = string.Empty; 
    value = value.Trim(); 
    var listWord = value.Split(' ').ToList(); 
    listWord.RemoveAll(p => p == string.Empty); 

    foreach (var item in listWord) result += 
     item.Substring(0, 1).ToUpper() + item.Substring(1).ToLower() + " "; 

    if (!isAllStartWithUpper) result = 
     result.Substring(0, 1) + result.Substring(1).ToLower(); 

    return result.Trim(); 
} 

나는 텍스트 상자가 있습니다. 어떻게 해결할 수 있을까요 ??하여 PropertyChanged 이벤트가 발생하지만 UI가 업데이트되지는

편집 :

public void SendPropertyChanged(string propertyName) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 

편집 :

내가 세터에서 디버그하는, 내가 _currentNguoiDung.TenNguoiDung이 ToStandardString 후 변경,하지만 UI가 업데이트되지 않은에서 본

업데이트 나는 몇 시간 동안 구글을 사용했고 나는 나의 대답을 얻었다. 이 버그는 디버그 모드에서만 발생합니다. 디버그없이 응용 프로그램을 실행할 때 완벽하게 작동합니다!

수정 디버그 모드 : [링크] Coerce Value in Property Setter - Silverlight 5

  1. 오른쪽 솔루션 탐색기에서 웹 프로젝트를 클릭하고 속성을 선택합니다.
  2. 웹 탭을 선택하십시오.
  3. 아래로 스크롤하여 디버거 섹션으로 이동하십시오.
  4. Silverlight 확인란의 선택을 취소하십시오.
+0

1) SendPropertyChanged 코드를 추가하십시오. 2)이 코드가 포함 된 클래스는 무엇입니까? 보기 모델 또는 코드 숨김? 3) 바인딩 오류가 없는지 확인하십시오. –

+0

@mot : 답장을 보내 주셔서 감사합니다. 1) myFunc SendPropertyChanged가 다른 MyProperty와 동일합니다.이 버그는 setter에서 ** value.ToStandardString() **을 사용할 때 발생합니다. 2) ViewModel의이 코드 3) 확실합니다. 바인딩 오류 없음 – MasterLuV

답변

1

속성을 포함하는 클래스의 인스턴스에 데이터 컨텍스트를 설정했는지 확인하십시오. 그것의 모습에서

당신은이 일을하지만 당신은이 일이 일어나고있는 바인딩 오류가 출력 창에 표시됩니다 경우 디버깅 할 때 당신이

에서 INotifyPropertyChanged

을 구현하고 있는지 확인한다.

'hello'를 입력하고 'world'로 바꾸면 값이 변경됩니까? 그렇다면 대소 문자가 민감한 문제 일 수 있습니다.

+0

네, 물론입니다. 내 코드는 정상적으로 작동 할 때까지 ** Set.ToStandardString() ** 메소드를 추가합니다. 예 : "YoU aRe GoOd Guy"를 입력하면 UI 자동 변경됨 "You Are Guy" – MasterLuV

+0

"INotifyPropertyChanged를 구현하는지 확인하십시오." – Benjol

관련 문제