从Datagrid中选择Datagrid的行数据

我想从连接到Entity Framework数据库的数据网格中获取每列的数据。 我想将它们转换为各自的Textboxes,但我似乎无法从datagrid中绘制数据。

这是我最初使用的代码( 在SO上看到它 ):

private void DataGridCamiao_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid DataGridCamiao = sender as DataGrid; DataRowView row = (DataRowView)DataGridCamiao.SelectedItems[0]; TextBoxMarca.Text = row["Marca"].ToString(); } 

虽然运行后它给我一个错误:

System.InvalidCastException:无法将(我的自定义类型)关联到DataRowView

我已经读过它并且我已经将它改为我的自定义类型,它说它不能被索引并且不能运行,这基本上让我难以接受,因为我尝试了其他方法。 我想要了解一下我在这里做错了什么,也许是实现同一目标的不同方法,我还要感谢任何想帮助我的人。

您应该将SelectedItem属性强制转换为您的实体类型:

 private void DataGridCamiao_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid DataGridCamiao = sender as DataGrid; if (DataGridCamiao.SelectedItem != null) { var item = DataGridCamiao.SelectedItem as YourEntityClass; if (item != null) TextBoxMarca.Text = item.Marca; } } 

YourEntityClass更改为实体类型的名称,即您已设置或绑定到DataGridItemsSource属性的IEnumerable的类型T

没有代码隐藏,你可以做同样的事情:

     

最好切换到MVVM方法并绑定DataGrid.SelectedItem和TextBox.Text来查看模型属性。