【发布时间】:2011-10-01 17:19:12
【问题描述】:
再一次,我在 WPF 中找不到一个简单的 UI 问题的简洁解决方案。我希望在组合框获得焦点时出现组合框下拉列表。所以我在 got focus 事件中写了这个:
private void comboBoxAC_Cat_GotFocus(object sender, RoutedEventArgs e)
{
comboBoxAC_Cat.IsDropDownOpen = true;
}
但现在的问题是,一旦打开下拉列表,应用程序就会卡在其中。无论我做什么,无论我是按 Enter 还是其他任何东西,它都无法从下拉列表中出来。我尝试注册失去焦点或其他事件,但似乎没有任何效果。这是我在应用程序中的事件处理程序列表,一旦我进入下拉列表,这些事件处理程序就变得无用了。
private void Grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
var uie = e.OriginalSource as UIElement;
if (e.Source is Button)
return;
if (e.Key == Key.Enter)
{
e.Handled = true;
uie.MoveFocus(
new TraversalRequrest(
FocusNavigationDiection.Next));
}
}
private void comboBoxAC_Cat_LostFocus(object sender, RoutedEventArgs e)
{
(sender as ComboBox).IsDropDownOpen = false;
}
有人可以帮我解决这个问题吗?
我的基本要求很简单:下拉列表应在组合框使用选项卡或鼠标聚焦后立即打开。然后用户应该能够选择项目,一旦他按下回车键从下拉列表中选择一个项目,它应该关闭并且焦点应该移动到下一个 ui 元素。
现在很难实现吗???我认为这正是组合框的功能
【问题讨论】:
-
链接到 IsDropDownOpen 属性:msdn.microsoft.com/en-us/library/…
-
@Marco:是的,但是我无法为我的应用程序修复,我的要求与下拉列表行为密切相关,无论我尝试什么,它仍然保持不变.....
标签: .net wpf user-interface combobox drop-down-menu