C# 如果我在wpf中有一个dataGrid,并且希望从特定列获取数据?

C# 如果我在wpf中有一个dataGrid,并且希望从特定列获取数据?,c#,wpf,datagrid,C#,Wpf,Datagrid,正如您在我的DataGrid中所看到的,我在第一列中有Id,我想得到这个数字。接收到的数据可以由该行中的所有数据组成,因为我可以使用子字符串只包含我需要的数据 我尝试使用SelectedItem,但它显示的是对象名,而不是数据本身 string selectedInfo = dataGrid.SelectedItem.ToString(); 这样做: dataGrid.SelectedItem.ToString(); 您将获得对象类型名称 要获取所选项目和Id: var item = dat

正如您在我的
DataGrid
中所看到的,我在第一列中有
Id
,我想得到这个数字。接收到的数据可以由该行中的所有数据组成,因为我可以使用子字符串只包含我需要的数据

我尝试使用
SelectedItem
,但它显示的是对象名,而不是数据本身

string selectedInfo = dataGrid.SelectedItem.ToString();
这样做:

dataGrid.SelectedItem.ToString();
您将获得对象类型名称

要获取所选项目和
Id

var item = dataGrid.SelectedItem as YourObjectType; // gets object, not type name - cast is also needed

if (item != null)
{
    var id = item.Id;
} 

通常的方法是将datagrid的selecteditem绑定到viewmodel中与每行类型相同的属性

然后,您可以在viewmodel中引用它并使用Id

他认为:

<DataGrid SelectedItem="{Binding SelectedThing}"
在viewmodel中需要id的某个位置

var id = selectedThing?.Id ?? -1;

检查默认实现,该实现声明它返回对象的类型名称。您需要将
SelectedItem
强制转换为任何对象,这样您就可以访问其属性。您不应该对与数据相关的任何内容进行控制。查看MVVM,使用它将使您的代码更易于阅读/维护。只需使用视图模型中的数据进行操作。
var id = selectedThing?.Id ?? -1;