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)
| 归档时间: |
|
| 查看次数: |
2246 次 |
| 最近记录: |