预览WPF中多选组合框中复选框的KeyDown

本文关键字:复选框 KeyDown WPF 预览 组合 | 更新日期: 2023-09-27 18:19:56

我使用本文创建多选ComboBox

当按下空格按钮时,我想选择/取消选择每个项目中的CheckBox

我尝试为CheckBox添加PreviewKeyDown,但没有引发该事件。

我还尝试在StackPanel中添加PreviewKeyDown,但我无法获得当前选中的CheckBox项目。

预览WPF中多选组合框中复选框的KeyDown

您需要处理组合框的KeyUp并确保下拉列表处于打开状态。

更新:

<Grid>
    <ComboBox x:Name="cbo" KeyUp="ComboBox_KeyUp" Height="30" Width="200">
        <CheckBox Content="checkbox1"/>
        <CheckBox Content="checkbox2"/>
        <CheckBox Content="checkbox3"/>
        <CheckBox Content="checkbox4"/>
        <CheckBox Content="checkbox5"/>
    </ComboBox>
</Grid>
///////////////////////////
private void ComboBox_KeyUp(object sender, KeyEventArgs e)
    {
        if (cbo.IsDropDownOpen)
        {
          // select first and second
         (cbo.Items[0] as CheckBox).IsChecked = true;
         (cbo.Items[1] as CheckBox).IsChecked = true;
        }
    }

我使用EventSetter

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

以及代码隐藏。

private void EventSetter_OnHandler(object sender,KeyEventArgs e)
 {
 var item=((ComboBoxItem)sender).DataContext as Node;
 item.IsSelected=!item.IsSelected;
 }