gpt4 book ai didi

wpf - 组合框仅通过鼠标或 Enter 键选择项目

转载 作者:行者123 更新时间:2023-12-04 16:39:24 26 4
gpt4 key购买 nike

我有一个 WPF ComboBox我需要在弹出列表中更改默认行为。

现在,按 updown key SelectedItem自动更改。
我需要零钱 SelectedItem只需按 Enter键,或鼠标点击。

怎么做到呢?

我已经子类化 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 中输入一些内容,弹出窗口就会打开。我必须通过键盘突出显示项目 UpDown . ComboBox 中的 TextBox 在突出显示期间不得更改,并且 SelectedItem 必须仅在我按 Enter 时更改(或鼠标点击)

UPD3:
演示解决方案链接: download

最佳答案

您应该在所有 ComboBoxItem 上处理此事件s 在组合框中。

   <ComboBox.Resources>
<Style TargetType="{x:Type ComboBoxItem}">
<EventSetter Event="PreviewKeyDown" Handler="OnPreviewKeyDown" />
</Style>
</ComboBox.Resources>

编辑:

在后面的代码中,您可以在 InitializeComponent() 之后在 MyComboBox 的构造函数中添加以下代码做这个...
  var comboBoxItemstyle = new Style(typeof (ComboBoxItem));  
comboBoxItemstyle.Setters.Add(
new EventSetter(PreviewKeyDownEvent,
new KeyEventHandler(OnPreviewKeyDown)));
this.Resources.Add(typeof (ComboBoxItem), comboBoxItemstyle);

希望这可以帮助。

关于wpf - 组合框仅通过鼠标或 Enter 键选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com