Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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# 在WPF DataGrid中单击“编辑”按钮时获取当前行?_C#_Wpf_Datagrid - Fatal编程技术网

C# 在WPF DataGrid中单击“编辑”按钮时获取当前行?

C# 在WPF DataGrid中单击“编辑”按钮时获取当前行?,c#,wpf,datagrid,C#,Wpf,Datagrid,在我的DataGrid中,最后一列是一个带有编辑按钮的TemplateColumn,当前的实现是用户需要选中行旁边的复选框,然后单击编辑按钮,显然,这是胡说八道,那么,当我单击相关的编辑按钮时,是否有办法获取当前行?您可以使用以下代码获取所选行: 假设这是模板列: <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate>

在我的
DataGrid
中,最后一列是一个带有编辑按钮的
TemplateColumn
,当前的实现是用户需要选中行旁边的复选框,然后单击编辑按钮,显然,这是胡说八道,那么,当我单击相关的编辑按钮时,是否有办法获取当前行?

您可以使用以下代码获取所选行: 假设这是模板列:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Click="Button_Click" CommandParameter="{Binding ElementName=dgDatagrid}">Details</Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
通过这种方式,您可以获取所选项目或行。

当前行是
按钮的
DataContext
,因此您可以强制转换
发送者
参数和
DataContext
属性:

private void Button_Click(object sender, RoutedEventArgs e)
{
    Button button = sender as Button:
    YourClass selectedRow = button.DataContext as YourClass;
    //...
}

selectedRow为空,selectedIndex为-1请确保CommandParameter不为空。在我这边,它工作得非常好。
private void Button_Click(object sender, RoutedEventArgs e)
{
    Button button = sender as Button:
    YourClass selectedRow = button.DataContext as YourClass;
    //...
}