从Datagrid中选择Datagrid的行数据

时间:2017-06-20 10:12:30

标签: c# wpf datagrid textbox

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

这是我最初使用的代码(saw it here on 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

相关联

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

2 个答案:

答案 0 :(得分:0)

您应该将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更改为您的实体类型的名称,即您已设置的T的类型IEnumerable<T>或绑定到{ItemsSource的{​​{1}}属性1}}。

答案 1 :(得分:0)

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

{{1}}

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