Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGrid-在当前项上运行事件处理程序的键_C#_Wpf_Datagrid - Fatal编程技术网

C# DataGrid-在当前项上运行事件处理程序的键

C# DataGrid-在当前项上运行事件处理程序的键,c#,wpf,datagrid,C#,Wpf,Datagrid,小WPF程序的源代码如下所示。它列出了DataGrid中c:\windows下的目录。该名称是一个链接,可以单击该链接在资源管理器中打开该目录 (这只是一个概念验证程序,用于说明问题。) 下面是它的样子: 我不仅能够单击链接来运行打开操作,还希望对其进行设置,以便用户可以在高亮显示行时按o键来运行打开操作 什么是一个好的设置方法?请注意,该程序主要是在C#中指定的,而不是在XAML中指定的,因此如果可能,请在C#中发布您的解决方案。但是,如果有必要,也欢迎使用XAML回答 MainWindow

小WPF程序的源代码如下所示。它列出了
DataGrid
c:\windows
下的目录。该名称是一个链接,可以单击该链接在资源管理器中打开该目录

(这只是一个概念验证程序,用于说明问题。)

下面是它的样子:

我不仅能够单击链接来运行打开操作,还希望对其进行设置,以便用户可以在高亮显示行时按
o
键来运行打开操作

什么是一个好的设置方法?请注意,该程序主要是在C#中指定的,而不是在XAML中指定的,因此如果可能,请在C#中发布您的解决方案。但是,如果有必要,也欢迎使用XAML回答

MainWindow.xaml

<Window x:Class="WpfFilesDataGrid.MainWindow"
        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"
        xmlns:local="clr-namespace:WpfFilesDataGrid"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>

    </Grid>
</Window>

例如,您可以处理
PreviewKeyDown
事件:

data_grid.PreviewKeyDown += (s, e) =>
{
    if(e.Key == Key.O && data_grid.SelectedItem is DirectoryInfo di)
        System.Diagnostics.Process.Start(di.FullName);
};

完美而简单!谢谢@mm8!如果您碰巧知道:-):
data_grid.PreviewKeyDown += (s, e) =>
{
    if(e.Key == Key.O && data_grid.SelectedItem is DirectoryInfo di)
        System.Diagnostics.Process.Start(di.FullName);
};