Obtenir les données de la ligne sélectionnée dans Datagrid en dehors de Datagrid

Je souhaite obtenir les données de chaque colonne d’une grid de données connectée à une firebase database Entity Framework. Je souhaite les convertir dans leurs zones de texte respectives, mais je ne parviens apparemment pas à extraire les données de la grid de données.

Voici le code que j’utilise au début ( vu ici sur SO ):

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

Bien qu’après avoir couru, cela me donne une erreur

System.InvalidCastException: impossible d’associer (mon type personnalisé) à DataRowView

J’ai lu des articles à ce sujet et je les ai modifiés en mon type personnalisé, pour lequel il est indiqué qu’il ne peut pas être indexé et ne s’exécute pas, ce qui m’a laissé perplexe lorsque j’ai essayé d’autres méthodes. J’aimerais avoir un aperçu de ce que je fais de mal ici, peut-être différentes manières d’atteindre le même objective et je remercie immédiatement tous ceux qui essaient de m’aider.

Vous devez convertir la propriété SelectedItem dans votre type d’entité:

 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; } } 

Définissez YourEntityClass sur le nom de votre type d’entité, c’est-à-dire le type T de IEnumerable que vous avez défini ou lié à la propriété ItemsSource du DataGrid .

vous pouvez faire la même chose sans code-behind:

     

et il est même préférable de passer à l’approche MVVM et de lier à la fois DataGrid.SelectedItem et TextBox.Text pour afficher les propriétés du modèle.