基于DataGrid选择值的按钮点击事件

Buttonclick event based on DataGrid selected value

我正在制作一个个人使用的小应用程序来练习 WPF 和 C#。该应用程序将根据存储在 SQL table 中的文件路径启动游戏(或其他应用程序)。我的 SQL 连接工作正常,数据已检索。

string query = "SELECT Title, [Path] FROM GOG.dbo.Games";

我正在使用 DataGrid 控件来显示游戏列表及其路径。我有一个“启动游戏”按钮,我想在 DataGrid 中获取当前突出显示的项目(即路径),然后获取路径字符串,因此 运行 使用 Process.Start() 方法.

这是我 Button_Click 上的内容,但我无法使用它:

private void LaunchButton_Click(object sender, RoutedEventArgs e)
{
    string gamePath = dataGrid1.SelectedItem.ToString();
    Process.Start(gamePath);
}

Debug 显示“gamePath "System.Data.DataRowView" string”,而不是实际路径的值,例如:“C:\Windows\System32\calc.exe”,我认为这就是为什么应用程序出错时说“The系统找不到指定的文件”,因为“System.Data.DataRowView”当然不是有效程序。

如何让它输入正确的字符串而不是“System.Data.DataRowView”?

dataGrid1.SelectedItem 给你 System.Data.DataRowView 对象。所以你可以直接将它用作字符串。你必须像下面那样从中获取路径。

private void LaunchButton_Click(object sender, RoutedEventArgs e)
{
    var row=dataGrid1.SelectedItem as System.Data.DataRowView;
    if(row!=null)
    {
       string gamePath = row["Path"].ToString();
       Process.Start(gamePath);
    }
}

DataGrid 的选定项目投射到 DataRowView

DataRowView row = (DataRowView)dataGrid1.SelectedItem; 

然后

row["ColumnName"];