Silverlight 5 + AutoCompleteBox = Bug

Yar*_*evi 4 autocomplete silverlight-toolkit autocompletebox silverlight-5.0

刚刚安装了几天前发布的SL5和工具包.
将AutoCompleteBox的Text属性设置为string.Empty时会发生错误.它导致AutoCompleteBox处于错误状态.重现错误:

将AutoCompleteBox和Button添加到主页面.注册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.
    }
} 
Run Code Online (Sandbox Code Playgroud)

在运行时:

1)在自动装箱中输入"aa".

2)单击按钮.

3)键入"q".(仍调用TextChanged).

4)擦除"q" - 调用TextChanged .

5)再次输入"q" - 调用TextChanged .

6)依此类推,直到你选了一封新信.然后它重新开始.

小智 6

我发现了这种奇怪行为的解决方法.您需要从AutoCompleteBox派生的控件并重写OnApplyTemplate方法以查找AutoCompleteBox的内部TextBox.

当内部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());
    }
}
Run Code Online (Sandbox Code Playgroud)