如何在WPF中的数据网格内的单击按钮上获取数据列值

时间:2012-06-26 15:08:08

标签: wpf wpf-controls wpfdatagrid

如何在数据网格控件内获取按钮单击事件的列值,
在Grid中有五列,第五列是按钮控件,第一列是一些ID值,
我正在使用

Int32 paperID = Convert.ToInt32(((System.Data.DataRowView)(DataGrid_MarksSummary.SelectedItem)).Row.ItemArray[0].ToString());

这里paperID总是来0,
如何在单击按钮时获取此id值。

1 个答案:

答案 0 :(得分:0)

假设您的代码中有按钮的单击事件处理程序,您可以遍历此处理程序中的可视树并查找基础行和您实际需要的数据:

private void ColumnButtonClick(object sender, RoutedEventArgs e)
    {
        Visual visual = (Visual)sender;
        while ((visual = VisualTreeHelper.GetParent(visual) as Visual) != null)
        {
            if (!(visual is DataGridRow)) continue;

            var row = (DataGridRow)visual;
            object item = row.Item; //your bound object
            break;
        }
    }

在这种情况下,'item'变量将实际的数据绑定对象保存在DataGridRow中。您可以将其转换为实际用作数据网格源的对象类型,然后从中获取所需的PaperID。