Sélectionner la ligne de l'élément dans le contrôle DataGrid WPF
J'ai un DataGrid
, lié à la table de Base de données, j'ai besoin de récupérer le contenu de la ligne sélectionnée dans DataGrid
, par exemple, je veux montrer dans MessageBox
contenu de la ligne sélectionnée.
Exemple de DataGrid
:
Donc, si j'ai choisi la deuxième rangée, mon MessageBox
doit donner quelque chose comme: 646 Jim Biologie.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
SelectedItem
propriété afin d'obtenir l'objet actuellement sélectionné, vous pouvez alors jeté dans le bon type. Par exemple, si votreDataGrid
est lié à une collection deCustomer
objets que vous pourriez faire ceci:Sinon, vous pouvez lier
SelectedItem
à votre classe de source ouViewModel
.Si vous utilisez le modèle MVVM vous pouvez lier une
SelectedRecord
propriété de votre VM avecSelectedItem
de la grille de données, de cette façon, vous avez toujours laSelectedValue
en vous VM.Sinon, vous devez utiliser le
SelectedIndex
propriété de la grille de données.C'est assez simple, dans cette grille de données de la dg et de la classe item est renseigné dans la grille de données et listblock1 est un châssis de base.
Vous pouvez également:
Eh bien, je mettrai solution similaire qui fonctionne très bien pour moi.
Viens de découvrir celui-ci après j'ai essayé de Fara de la réponse, mais il ne fonctionne pas sur mon projet. Il suffit de glisser la colonne à partir de la fenêtre Sources de Données, et de les déposer à l'Étiquette ou la zone de texte.
utiliser votre Modèle de classe pour obtenir les valeurs de ligne sélectionné à partir de la grille de données comme,
si j'ai choisi la deuxième rangée -
noteText sera 646. C'est VB, mais vous l'obtenez.
@Krytox réponse avec MVVM
Il y a beaucoup de réponses ici, qui est probablement à l'œuvre dans un contexte particulier, mais j'ai été tout simplement essayer d'obtenir le texte de la valeur de la première cellule d'une ligne sélectionnée. Alors que l'on a accepté la réponse ici était le plus proche, pour moi, il a toujours exigé la création d'un type et d'un moulage de la ligne dans ce type. Je cherchais une solution plus simple, et c'est ce que je suis venu avec:
MessageBox.Show(((DataRowView)DataGrid.SelectedItem).Row[0].ToString());
Cela me donne la première colonne de la ligne sélectionnée. Espérons que cela aide quelqu'un d'autre.
Customer customer = (Customer)myDataGrid.SelectedItem;
— une solution en ligne, clair et précis. Pas de(((
, aucun indexRow[0]
, pas deToString()
— trop des opérations supplémentaires pour obtenir quelque chose de l'API vous donne avec une seule commande —SelectedItem
.