2011-12-08 2 views
0

저는 TextBox입니다. TextBox은 속성에 바인딩됩니다. 속성은 상자에 문자를 입력 할 때마다 설정됩니다. 완벽하게 작동합니다! .텍스트가 같을 때 TextBox가 업데이트되지 않습니다

는 지금은 예를 들어

그들이에 입력 할 때 잘못된 문자를 제거하려면 : 사용자는 string.replace("@", ""); 같은 (뭔가를 제거 할 수 있도록 @@이 허용되지 않습니다 입력도 작동

합니다. 잘. 오래된 텍스트, 이제 누군가 유형 @. 새로운 텍스트, [email protected]이 속성으로 전송됩니다 "6378fj."는 @이 제거됩니다 (지금은 6378fj)와 OnPropertyChanged 해고됩니다 말할 수있다.

이제 TextBox는 Property에서 새 Value를 가져 오지만, 이전과 같은 값입니다. 그리고 @은 여전히 ​​TextBox에 남아 있습니다. 조금 이상합니다. 유효 텍스트가 원본 텍스트와 동일 할 때만 작동합니다.

TextBox 자체를 업데이트 할 수있는 방법이 있습니까? 나는 네가 의미하는 바를 알기를 희망하며, 나는 영어 원어민이 아니다. 감사.

+3

코드를 게시하십시오. –

+3

일부 코드를 공유 할 수 있습니까? – reggie

+2

일부 소스 코드를 제공 할 수 있습니까? OnPropertyChanged를 시작하기 전에 내부 변수를 수정 된 값으로 설정합니까? 유효성 검사기 사용을 고려 했습니까? – Markus

답변

1

속성 설정자의 캐릭터를 교체한다고 가정합니다. 바인딩에 의해 속성이 업데이트되는 경우 해당 속성에 대한 PropertyChanged 이벤트가 무시됩니다. 바인딩이 속성 업데이트를 마친 후에 이벤트를 발생시켜야합니다. 당신은 텍스트가 PreviewTextInput 이벤트를 처리하여 TextBox에 입력에보다 쉽게 ​​유효성 검사를 수행 할 찾을 수 있습니다

Application.Current.Dispatcher.BeginInvoke(new Action(() => OnPropertyChanged("TheProperty"))); 
0

: 그렇게하는 쉬운 방법은 Dispatcher.BeginInvoke 방법을 사용하는 것입니다. 이렇게하면 TextBox에 커밋되기 전에 새 텍스트를 확인할 수 있습니다. 수정을 방지하려면 e.Handled = trueTextCompositionEventArgs에서 이벤트 핸들러로 전달하면됩니다.

0

바보 같은 질문이지만, 당신은 string.Replace("@","")이라고 말하고 있습니다. 결과를 원래 문자열에 다시 할당하는 것을 기억하고 있습니까? 그렇습니다. 나는 그것이 분명한 질문 인 것을 안다. 그러나 나는 그것을 여러 번 본적이 없다. :)

예. myString = myString.Replace("@","");

0

왜 같은 기호 입력을 거부하지 않으려는 '@'? 나는 당신이 PreviewTextInput 이벤트를 사용할 수 있습니다이 경우 이러한 기호 및 삭제 ...

를 검색하는 것보다 쉬울 것 같아요.

0
String str1 = "Hello"; 
String str2 = "Hello"; 
bool ch = str1 == str2; 
관련 문제