在Silverlight应用程序中使用空格键选择数据网格行

本文关键字:数据 选择 数据网 网格 空格键 Silverlight 应用程序 | 更新日期: 2023-09-27 18:23:37

我在Silverlight应用程序中有一个Datagrid。用户可以使用Tab键在Datagrid上获得焦点,并使用向上和向下箭头键在不同的行之间移动。

请提供建议,当用户点击所选行的空格键时,如何激发行选择事件。

以下是代码片段:

<Custom:ClientControl  
x:Class="TestNamespace.Modules.Views.SampleView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
mc:Ignorable="d"  
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
<sdk:DataGrid x:Name="dg" ...>
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseLeftButtonUp">
      <i:InvokeCommandAction Command="{Binding DoSomething}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
<sdk:DataGrid.Columns>
...

在Silverlight应用程序中使用空格键选择数据网格行

很明显,解决方案非常简单。

步骤1:将KeyDown添加到数据网格中。

<sdk:DataGrid x:Name="dg" KeyDown="dg_KeyDown">

步骤2:在Datagrid KeyDown事件内的.XAML.CS文件中,调用处理MouseLeftButtonUp事件的方法。

private void dg_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == System.Windows.Input.Key.Space)
    {
        this.viewModel.DoSomething();
    }
}

试试这个:

<DataGrid>
    <DataGrid.InputBindings>
         <KeyBinding Key="Space" Command="{Binding DoSomething}"/>
    </DataGrid.InputBindings>
</DataGrid>

可以将选定的值绑定到视图模型中的特性。