4

며칠 전에 릴리스 된 SL5와 툴킷을 설치했습니다.
AutoCompleteBox의 Text 속성을 string.Empty로 설정하면 버그가 발생합니다. AutoCompleteBox가 버그 상태가됩니다. 버그를 재현하려면 다음을 수행하십시오.Silverlight 5 + AutoCompleteBox = 버그

기본 페이지에 자동 완성 상자 및 단추를 추가하십시오. TextChanged 및 Click 이벤트에 등록하십시오. 런타임에서

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     auto.Text = string.Empty; 
    } 

    private void auto_TextChanged(object sender, RoutedEventArgs e) 
    { 
     // Put a break point here. 
    } 
} 

:

1)가 자동 박스에 "AA"를 입력 이것은 코드 숨김입니다.

2) 버튼을 클릭하십시오.

3) "q"를 입력하십시오. (TextChanged 여전히 호출됩니다).

4) "q"를 지우십시오. - TextChanged는 이 아니고이 호출되었습니다.

5) "q"를 다시 입력하십시오. - TextChanged는 이 아니며이 호출되었습니다.

6) 새 편지를 선택할 때까지. 그런 다음 다시 시작합니다.

+0

커스텀 자동 완성 툴킷의 자동 완성 –

답변

6

이 이상한 동작에 대한 해결책을 찾았습니다. AutoCompleteBox에서 파생 된 컨트롤이 필요하고 AutoCompleteBox의 내부 TextBox를 찾으려면 OnApplyTemplate 메서드를 재정의해야합니다.

내부 TextBox TextChanged 이벤트가 발생하면 AutoCompleteBox 컨트롤의 TextChanged 이벤트를 수동으로 발생시켜야합니다.

public class CustomAutoComplete : AutoCompleteBox 
{ 
    TextBox mytext; 

    public override void OnApplyTemplate() 
    { 
     base.OnApplyTemplate(); 
     mytext = GetTemplateChild("Text") as TextBox; 
     mytext.TextChanged += new System.Windows.Controls.TextChangedEventHandler(mytext_TextChanged); 
    } 

    void mytext_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) 
    { 
     this.Text = mytext.Text; 
     OnTextChanged(new RoutedEventArgs()); 
    } 
} 
+0

을 사용해야합니다. 나를 많이 구해줘. 감사합니다 – tomasK

+0

@ Pawel Redmerski 고마워요 !!!! 나는이 문제에 막 다른 골목에 빠져 있었다 ... 위대한 해답 !!!! – jcgalveza

+0

감사합니다. 그것은 여전히 ​​정말로 도움이됩니다! –

관련 문제