gpt4 book ai didi

c# - 在 ListView 的 gridview 中使用空格/输入选中/取消选中复选框 - wpf

转载 作者:行者123 更新时间:2023-11-30 15:33:47 25 4
gpt4 key购买 nike

我有一个 GridView,其中 CheckBox 作为一列,TextBlock 作为另一列。这是 XAML 代码:

<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style>
<Setter Property="UIElement.Visibility"
Value="Collapsed"/>
</Style>
</GridView.ColumnHeaderContainerStyle>

<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding}"
IsChecked="{Binding Path=IsFormChecked, Mode=TwoWay}"
IsEnabled="{Binding Path=IsUnRestricted}"
IsThreeState="False"
UIElement.KeyUp="CheckBox_KeyUp" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

<GridViewColumn Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Width="600"
Tag="{Binding}"
IsEnabled="{Binding Path=IsUnRestricted}"
Text="{Binding Path=FormName}"
MouseUp="TextBlock_MouseUp">
<TextBlock.ToolTip>
<TextBlock Text="{Binding Path=FormName}"/>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>

当我使用键盘访问此 GridView 时,完整的行被选中(CheckBox 以及 TextBlock)。现在,如果我按空格键,什么也不会发生。如果我想使用键盘访问 CheckBox,我必须再按一次 Tab 键,以便将焦点设置在复选框上,然后我可以使用空格键选中/取消选中它。我想要做的是当焦点位于我想选中/取消选中复选框的行时,只需按一下空格键即可。

最佳答案

如果您对当前选定的项目有绑定(bind),则可以处理 ListView 上的 PreviewKeyUp 事件:

<ListView PreviewKeyUp="OnGridKeyUp"
SelectedItem="{Binding MySelectedItem}"
SelectionMode="Single"
ItemsSource="{Binding ItemsList}">
...
</ListView>

然后在代码隐藏中处理:

private void OnGridKeyUp(object sender, KeyEventArgs e)
{
if(vm.mySelectedItem != null && e.Key == Key.Space)
{
vm.MySelectedItem.IsChecked = !vm.MySelectedItem.IsChecked;
e.Handled = true; //this is necessary because otherwise when the checkbox cell is selected, it will apply this keyup and also apply the default behavior for the checkbox
}
}

这显然需要您从后面的代码中处理您的 View 模型。这可能很简单:

var vm = DataContext as MyViewModel;

这不是最 MVVM 的方式,但是嘿...

关于c# - 在 ListView 的 gridview 中使用空格/输入选中/取消选中复选框 - wpf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939859/

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