
将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. }} 在运行时:
1)在autoBox中输入“aa”.
2)单击按钮.
3)键入“q”. (仍调用TextChanged).
4)擦除“q” – 不调用TextChanged.
5)再次输入“q” – 不调用TextChanged.
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()); }} 总结 以上是内存溢出为你收集整理的Silverlight 5 AutoCompleteBox = Bug全部内容,希望文章能够帮你解决Silverlight 5 AutoCompleteBox = Bug所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)