2011-12-20 3 views
0

WPF의 많은 기능과 마찬가지로 가장 쉬운 방법은 예제를 찾기가 가장 힘든 경우입니다. 어떻게 AutoCompleteBox의 현재 텍스트를 지우시겠습니까? 내 OnFocus 이벤트에서 사용자에게 입력을위한 명확한 상자가 제공되는지 확인하고자합니다. 따라서 내 이벤트 절차는 다음과 같습니다.자동 완성 상자의 값을 지우는 방법은 무엇입니까?

private void autGlobal_GotFocus(object sender, RoutedEventArgs e) 
{ 
    AutoCompleteBox acb = (AutoCompleteBox)sender; 
    if (acb.SearchText == "Search Term") 
    { 
     //clear out the box if it has the focus      
     this.autGlobal.Text = ""; 
    }   
} 

그러나 텍스트 속성을 직접 설정하는 것은 효과가없는 것 같습니다. 나는 명백한 것을 놓치고 있는가?

+0

잘 작동합니다. 대신에'this.autGlobal.Text = "";'acb.Text = ""; '를 사용하면 잘 작동하는 것처럼 보입니다. –

답변

0

나는이 문제와 XAML에 많은 시간을 들여 답을 찾았다 고 생각합니다. XAML에서 IsTextCompletionEnabled 옵션을 true로 설정하면이 코드 예제가 작동하지 않습니다. 내가 거짓으로 설정 하고이 코드는 잘 작동합니다.

0

로컬 변수에서 속성을 설정해 보았습니까?

acb.Text = string.Empty; 

나는 느낌이 초점 또는 textchange 이벤트가 발사 될 때는 .text 필드에 영향을 미치는 추가 코드가있을 수 있습니다.

+0

그냥 시도해 볼 코드를 썼는데 그냥 복숭아를 사용했습니다. –

+0

나는 당신이 발사하는 다른 사건에 관하여 당신이 맞을지도 모른다 생각합니다. 속성이 좋게 설정 될 것으로 보이지만 뭔가 다른 부분을 대신하여 검색 상자의 내용이 강조 표시되고 그대로 유지됩니다. 저를 검사하거나 무시할 수있는 방법이 있습니까? –

+0

AutoCompleteBox를 서브 클래스 화하고 해당 메서드를 재정의 할 수 있습니다. 이 경우에도 예기치 않은 문제가 발생할 수 있습니다. 그 _secret_ 이벤트는 실제로 자동 완성을 올바르게 수행하는 데 필요한 작업을 수행 중일 수 있습니다. 코드를 검사하여 진행 상황을 확인하려면 AutoCompleteBox 소스가 [available] (http://wpf.codeplex.com/SourceControl/list/changesets)입니다. –

0

선택한 항목을 재설정해야합니다.

private void SearchAutoCompleteBox_OnPreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    SearchAutoCompleteBox.SelectedItem = null; 

    SearchAutoCompleteBox.Text = string.Empty; 
} 
관련 문제