预览WPF中多选组合框中复选框的KeyDown
本文关键字:复选框 KeyDown WPF 预览 组合 | 更新日期: 2023-09-27 18:19:56
我使用本文创建多选ComboBox
。
当按下空格按钮时,我想选择/取消选择每个项目中的CheckBox
。
我尝试为CheckBox
添加PreviewKeyDown
,但没有引发该事件。
我还尝试在StackPanel
中添加PreviewKeyDown
,但我无法获得当前选中的CheckBox
项目。
您需要处理组合框的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;
}