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;