2015-11-20 26 views
0

我在Silverlight应用程序中有一个Datagrid。用户可以使用Tab键将焦点放在Datagrid上,并使用向上和向下箭头键在各行之间移动。在Silverlight应用程序中使用空格键选择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> 
... 

回答

1

实际上解决方案竟然是非常smiple。

第1步:将KeyDown添加到Datagrid。

<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(); 
    } 
} 
0

试试这个:

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

您可以选择的值绑定到您的视图模型的属性。

+0

感谢瑞恩的帮助。 但是,我在XAML文件中添加上面的行后看到错误“成员”InputBindings“无法识别或无法访问”。我已经添加了代码片段以供参考。 – AaBa

+0

您能否显示您声明'skd'的地方,谢谢 –

+0

我已经更新了代码段。 – AaBa

相关问题