WPF DataGrid:空格键切换复选框

时间:2014-08-08 22:10:46

标签: c# wpf xaml datagrid wpfdatagrid

当我选择该行的任何部分时,我试图找出如何让空格键切换复选框(位于每行的第一列)。

以下是设置:

      <ui:DataGridEx ItemsSource="{Binding ListOfThings}"
                 SortingCallback="{Binding Sorting}"
                 SelectionChangedCallback="{Binding SelectionChanged}"
                 SelectionMode="Extended"
                 GridLinesVisibility="None"
                 AutoGenerateColumns="False"
                 HeadersVisibility="Column"
                 ScrollViewer.CanContentScroll="True">
     <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
           <Setter Property="BorderThickness" Value="0"/>
           <Setter Property="ToolTip" Value="{StaticResource UnhelpfulTooltip}"/>
           <Setter Property="ToolTipService.ShowDuration" Value="20000"/>
           <Setter Property="IsTabStop" Value="False"/>
        </Style>
     </DataGrid.CellStyle>
     <DataGrid.Columns>
        <DataGridTemplateColumn CanUserSort="False" >
           <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                 <CheckBox IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                           HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,2.5,5,2.5" IsEnabled="True" />
              </DataTemplate>
           </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn CanUserSort="False" >
           <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                 <Image Style="{StaticResource ImageOfSomeAwesome}" VerticalAlignment="Center" Margin="5,2.5,5,2.5" /> 
              </DataTemplate>
           </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Green!"
                            CanUserSort="True"
                            Foreground="DarkGreen"/>
        <DataGridTextColumn Header="Magenta!"
                            CanUserSort="True"
                            Foreground="DarkMagenta"/>
        <DataGridTextColumn Header="Blue!"
                            CanUserSort="True"
                            Foreground="MidnightBlue"/>
        <DataGridTextColumn Header="Goldenrod!"
                            CanUserSort="True"
                            Foreground="DarkGoldenrod"/>
        <DataGridTextColumn Header="Cyan!"
                            CanUserSort="True"
                            Foreground="DarkCyan"/>
        <DataGridTextColumn Header="Yellow AND green!"
                            CanUserSort="True"
                            Foreground="YellowGreen"/>
     </DataGrid.Columns>
  </ui:DataGridEx>

如果我使用鼠标选择一行,则按空格键不会执行任何操作。如果我使用鼠标选中或取消选中该复选框,则按空格键 选中/取消选中该复选框。如果我切换到下一行,空格键也可以,但是复选框本身在边缘周围有一条丑陋的虚线,表明它已被选中(如果我用鼠标检查它就不会发生) 。 enter image description here vs enter image description here

如果我通过仅更改xaml选择行后,是否有办法让空格键选中/取消选中该框?或者我是否需要手动处理VM中的OnKeyDown事件?

0 个答案:

没有答案