【发布时间】:2013-12-05 22:27:26
【问题描述】:
我正在尝试在控制焦点上打开 System.Windows.Controls.AutoCompleteBox。事件触发但没有任何反应:/当我开始输入一些文本时,自动完成框工作正常。我究竟做错了什么?
AutoCompleteBox box = new AutoCompleteBox();
box.Text = textField.Value ?? "";
box.ItemsSource = textField.Proposals;
box.FilterMode = AutoCompleteFilterMode.Contains;
box.GotFocus += (sender, args) =>
{
box.IsDropDownOpen = true;
};
【问题讨论】:
-
这里没有多少使用 Silverlight 的经验,但也许值得尝试
box.Dispatcher.BeginInvoke((Action) (() = > { box.IsDropDownOpen = true; }))。我的怀疑是控件在内部对 Focus 事件的处理会妨碍您打开下拉菜单。使用 Dispatcher 队列,您可以在完全处理完 Focus 事件后让下拉列表打开。 -
另一个原因可能是,如果没有项目匹配,AutoCompleteFilterMode.Contains 不允许打开下拉菜单。试试 AutoCompleteFilterMode.None 看看会发生什么...
-
两个建议都有帮助,但还有一个问题。当盒子里有东西时,一切正常 - 当什么都没有时,下拉菜单根本不会出现:(
-
你的意思是,即使使用 AutoCompleteFilterMode.None 并且 AutoCompleteBox 的 ItemsSource 包含至少一个元素(又名非空),下拉菜单也不会出现?
-
您介意发布工作代码 sn-p 作为答案吗(即使您正在回答自己的问题)?了解其他陷入类似问题的人可能会有所帮助...
标签: c# wpf autocomplete