2013-10-07 6 views
1

내보기의 속성에 텍스트 상자를 바인딩하는 데 문제가 있습니다. 바인딩은 마지막 문자를 제거 할 때까지 완벽하게 작동합니다. 커서가 뒤로 이동하지만 마지막 문자가 텍스트 상자와 바인딩 된 속성에 그대로 남아 있습니다. 텍스트 상자 바인딩의 마지막 문자 제거

<TextBox Grid.Column="0" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

그리고 인적 또는 자체

public string SearchText 
    { 
     get { return _searchText; } 
     set 
     { 
      if (searchText != value) 
      { 
       if (value != "") 
       { 
        Debug.WriteLine("Typed Value " + value); 
        searchText = value; 
       } 

      } 
     } 
    } 

이가 출력 : 나는 완전히 텍스트 상자에서 푸를 삭제하려고하면 "형식화 된 값 F". 백 스페이스를 마지막으로 누르면 커서는 뒤로 이동하지만 문자는 제거되지 않습니다.

어떻게 해결할 수 있습니까?

답변

0

조건문을 사용하면 새 값을 설정할 수 없습니다.

if (value != "") //if value is NOT an empty string 
{ 
    Debug.WriteLine("Typed Value " + value); 
    searchText = value; 
} 

따라서는 (즉, 마지막 문자는 삭제), 당신이 때문에 새로운 값을 설정하지 searchText = value를 호출하지 않는 빈 문자열 인 경우. 표시된 코드에서 해당 체크가있는 이유를 볼 수 없으므로 코드를 제거하거나 항상 해당 블록 외부에 value을 설정해야합니다.

+0

ㅎ 코드 블라인드는 여기에있다. 다시 현실로 돌아와 주셔서 감사합니다. – Giffesnaffen

+0

당신은 환영합니다 :) – keyboardP

0

TextBox에서 모든 것을 제거한다는 것은 텍스트를 string.Empty 또는 ""로 설정한다는 것을 의미합니다.

이제 속성을 비워 두지 않으므로 마지막 문자는 항상 TextBox에 남아있게됩니다.

그냥 경우의 타고 도착 (값! = "") 다시 코드에서

0

if (value != "") 
{ 
    Debug.WriteLine("Typed Value " + value); 
    searchText = value; 
} 

값 == 경우 ""검색 텍스트는 '할당되지 않은

if (value != "") 
{ 
    Debug.WriteLine("Typed Value " + value);  
} 
searchText = value; 
+0

당신은 정말로 그 부분을 제거해서는 안됩니다. 나는 그것을 좋아한다 :) –

관련 문제