【发布时间】:2011-12-05 06:41:03
【问题描述】:
我有一个 WPF ComboBox
我需要更改弹出列表中的默认行为。
现在,按up 和down 键SelectedItem 会自动更改。
我只需按Enter 键或鼠标单击即可更改SelectedItem。
怎么做?
我已经继承了ComboBox:
protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
{
Debug.Write("Pressed " + e.Key+ " ");
if (e.Key == System.Windows.Input.Key.Up || e.Key == System.Windows.Input.Key.Down)
{
// ???
e.Handled = true;
return;
}
base.OnPreviewKeyDown(e);
}
此代码不起作用 - 不显示弹出窗口并且用户无法选择项目。 我应该写什么,在哪里写? :)
谢谢。
UPD1:
我需要与ComboBox's 弹出窗口相同的功能,并且用户可以通过鼠标选择项目。
每个项目都可以用鼠标悬停,但不能被选中。选择成为仅通过按下鼠标按钮。我需要同样的。 “向上”和“向下”仅突出显示弹出窗口中的项目,但 SelectedItem 将仅通过按 Enter 或单击鼠标来更改。
UPD2: 如果我通过鼠标按下按钮,在 ComboCox 中打开 Popup,我可以通过鼠标突出显示 Popup 中的项目,但 SelectedItem 只有在我单击项目时才会更改。
我需要通过键盘实现相同的功能。如果我开始在 ComboBox 中输入一些内容,则会打开弹出窗口。我必须通过键盘Up 和Down 突出显示项目。 ComboBox 中的 TextBox 在突出显示期间不得更改,并且 SelectedItem 只有在我按下 Enter(或鼠标单击)时才能更改
UPD3: 演示解决方案链接:download
【问题讨论】: