0 votes

Ajout d'une Combobox à un DataGrid dans Silverlight

Je peux ajouter une Combobox à un DataGrid en utilisant le xmal suivant:

Cependant, ce que je n'arrive pas à comprendre, c'est une façon logique d'obtenir la ligne à laquelle est liée la combobox. c'est-à-dire, en gérant l'événement SelectionChanged de la combobox, je n'ai aucun moyen de savoir à quelle ligne appartient la combobox. En particulier, je ne sais pas quel objet dans la source de données du DataGrid la combobox fait référence.

Toute aide serait grandement appréciée.

2voto

alexander.biskop Points 1116

Vous pourriez

A) Lier la propriété SelectedItem de la ComboBox à une propriété dans votre ViewModel/modèle de données en utilisant une liaison à double sens, ainsi vous n'auriez pas à vous soucier de SelectionChanged

ou

B) Utilisez DataGridRow.GetRowContainingElement(element) dans votre gestionnaire de l'événement SelectionChanged, c'est-à-dire

private void SomeCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var comboBox = sender as ComboBox;
    if (comboBox == null)
        return;
    var row = DataGridRow.GetRowContainingElement(comboBox);
    // Faire quelque chose avec la ligne...
}

Santé, Alex

1voto

Stephan Points 4119

Si vous cherchez simplement à obtenir l'élément auquel la ligne est liée, vous pouvez simplement lire le DataContext de l'expéditeur :

private void SomeCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var item = sender as FrameworkElement;
    if (item== null)
        return;
    var source = item.DataContext;
}

0voto

loic Points 21

Si je comprends bien, lorsque vous cliquez sur la liste déroulante, cette ligne devrait être mise en surbrillance. Cela signifie également que la datagrid est consciente de l'élément sélectionné.

Si vous recherchez l'objet sélectionné, vous devriez y avoir accès avec datagridName.SelectedItem. Cela renverra l'objet sélectionné.

Veuillez tester cela et commenter sur la solution car je ne peux pas vérifier la réponse en ce moment.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X