C# 如何读取Datagrid选定行中第一个单元格中的值?

C# 如何读取Datagrid选定行中第一个单元格中的值?,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个datagrid,它包含来自两个不同表的数据,分别称为ITEMS和ORDER\u ITEMS。 数据网格的格式如下所示- 项目ID |项目名称|单价|数量|金额 这里,ItemID、ItemName、Price列属于表项,Quantity和Amount(Amount=Price*Quantity)列属于表ORDER\u项 因此,我在创建选定行作为ITEMS类型的新对象(或实例)以捕获ItemID时遇到了一些问题。如何读取“选定”行的ItemID属性 更新: 当我尝试使用以下代码(根据J

我有一个datagrid,它包含来自两个不同表的数据,分别称为ITEMS和ORDER\u ITEMS。 数据网格的格式如下所示- 项目ID |项目名称|单价|数量|金额

这里,ItemID、ItemName、Price列属于表项,Quantity和Amount(Amount=Price*Quantity)列属于表ORDER\u项

因此,我在创建选定行作为ITEMS类型的新对象(或实例)以捕获ItemID时遇到了一些问题。如何读取“选定”行的ItemID属性


更新: 当我尝试使用以下代码(根据John K给出的语法)时,出现错误-错误1“Microsoft.Windows.Controls.DataGrid”不包含“SelectedRows”的定义,并且找不到接受类型为“Microsoft.Windows.Controls.DataGrid”的第一个参数的扩展方法“SelectedRows”(是否缺少using指令或程序集引用?)


我发现了一些关于这个问题的信息。刚刚在微软库中发现它在命名空间系统.WINDOWS.FUNDS.DLL中。但是我现在使用Windows演示基金会。你认为这与我目前面临的问题有关吗?< /P> < P>假设ITEMID在第一个(0)中。datagrid的列…所选行将返回一个数组,因此如果仅选择了1行,则第一(0)元素将包含该行

尝试:


使用DataGrid.CurrentItem属性。该属性为您提供数据绑定到当前行的对象。例如:

class DataClass {
   string ID { get; set; }
   ...
}

...

DataClass current = (DataClass)dataGrid.SelectedItem;
string id = current.ID;

感谢您的回复。我尝试了它。但是我无法在IntelliSense中看到SelectedRows。如果我自己键入它,Visual Studio将在读取“Microsoft.Windows.Controls.DataGrid”时出错,因为它不包含“SelectedRows”的定义,并且没有扩展方法“SelectedRows”接受类型为“Microsoft.Windows.Controls.Da”的第一个参数可以找到taGrid(是否缺少using指令或程序集引用?)PS:我也尝试过SelectedRow。它也不起作用。看起来答案是针对DataGridView,这是一个WinForms控件,而不是您正在使用的WPF DataGrid。哦,是的,这将使对象绑定到当前行。但它给了我错误。问题是,这些行是多个对象的组合(在我的例子中,它是2)。因此我无法使用行值实例化这两种类型的实例。顺便说一下,我现在遇到了这个错误-无法将类型为“f_uAnonymousType2`2[Business.ITEM,Business.ORDER_ITEM]”的对象强制转换为类型“Business.ITEM”。是的,这是一个无法强制转换为匿名类型的问题。可以1)使用反射2)如果您在.NET4中,请转换为动态或3)创建一个数据类,而不是使用匿名类型非常感谢。我试试第三个。这似乎是最简单的一个,因为我没有时间学习反思,也无法在我的Dell Mini 10v上运行VS 2010。我很快会在这里公布结果。:)再次,非常感谢您提出的酷主意。:-)这起作用了:向dataclass ORDER_项添加了另外两个属性。这是你的答案。非常感谢你的解决方案。
string  strVal =  DataGridView1.SelectedRows[0].Cells[0].Text;
class DataClass {
   string ID { get; set; }
   ...
}

...

DataClass current = (DataClass)dataGrid.SelectedItem;
string id = current.ID;