Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中多选组合框中复选框的预览向下键_C#_Wpf_Checkbox_Combobox - Fatal编程技术网

C# WPF中多选组合框中复选框的预览向下键

C# WPF中多选组合框中复选框的预览向下键,c#,wpf,checkbox,combobox,C#,Wpf,Checkbox,Combobox,我使用article创建多选组合框 按下空格键时,我想在每个项目内选中/取消选中复选框 我试图为复选框添加PreviewKeyDown,但未引发事件 我还尝试在StackPanel中添加PreviewKeyDown,但是我无法获得选中的项目,因为它的复选框当前处于选中状态。您需要处理组合框的向上键,并确保下拉框处于打开状态 更新: <Grid> <ComboBox x:Name="cbo" KeyUp="ComboBox_KeyUp" Height="30" Width

我使用article创建多选
组合框

按下空格键时,我想在每个项目内选中/取消选中
复选框

我试图为
复选框添加
PreviewKeyDown
,但未引发事件


我还尝试在
StackPanel
中添加
PreviewKeyDown
,但是我无法获得选中的项目,因为它的
复选框当前处于选中状态。

您需要处理组合框的向上键,并确保下拉框处于打开状态

更新:

<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;

        }
    }

///////////////////////////
私有void组合框\u KeyUp(对象发送方,KeyEventArgs e)
{
如果(cbo.IsDropDownOpen)
{
//选择第一个和第二个
(cbo.Items[0]作为复选框)。IsChecked=true;
(cbo.Items[1]作为复选框)。IsChecked=true;
}
}

我使用
EventSetter

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

将PreviewKeyDown事件添加到主窗口而不是复选框。如何获取选中复选框的选定项?如果(发件人是ComboBox&((ComboBox)发件人)。IsDropDownOpen&((ComboBox)发件人)。项[0]作为复选框)。IsChecked=true){…}打开的ComboBox,我想选中复选框,在press space中的选定项目中。@ar.gorgin我添加了一些代码来给您一个想法。我使用多选组合框,我想为项目添加事件。
private void EventSetter_OnHandler(object sender,KeyEventArgs e)
 {
 var item=((ComboBoxItem)sender).DataContext as Node;
 item.IsSelected=!item.IsSelected;
 }