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

时间:2017-05-29 08:47:29

标签: c# wpf datagrid

在我的DataGrid中,最后一列是TemplateColumn,其中有一个编辑按钮,当前的实现是用户需要选中该行旁边的复选框,然后点击编辑按钮,显然这是无意义的,所以当我点击相关的编辑按钮时,是不是有办法获取当前行?

2 个答案:

答案 0 :(得分:2)

“当前行”是DataContext的{​​{1}},因此您可以投射Button参数和sender属性:

DataContext

答案 1 :(得分:0)

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

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Click="Button_Click" CommandParameter="{Binding ElementName=dgDatagrid}">Details</Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

将元素名称作为datagrid的名称作为命令参数提供,并在代码隐藏或视图模型中使用以下内容:

private void Button_Click(object sender, RoutedEventArgs e)
{
    DataGrid datagrid = ((Button)sender).CommandParameter as DataGrid;
    var selectedRow = datagrid.SelectedItem;
    var selectedIndex = datagrid.SelectedIndex;
}

这样您就可以获得所选项目或行。