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
- 오른쪽 솔루션 탐색기에서 웹 프로젝트를 클릭하고 속성을 선택합니다.
- 웹 탭을 선택하십시오.
- 아래로 스크롤하여 디버거 섹션으로 이동하십시오.
- Silverlight 확인란의 선택을 취소하십시오.
1) SendPropertyChanged 코드를 추가하십시오. 2)이 코드가 포함 된 클래스는 무엇입니까? 보기 모델 또는 코드 숨김? 3) 바인딩 오류가 없는지 확인하십시오. –
@mot : 답장을 보내 주셔서 감사합니다. 1) myFunc SendPropertyChanged가 다른 MyProperty와 동일합니다.이 버그는 setter에서 ** value.ToStandardString() **을 사용할 때 발생합니다. 2) ViewModel의이 코드 3) 확실합니다. 바인딩 오류 없음 – MasterLuV