2010-10-01 5 views
1

Comment modifier la ligne sélectionnée par programme?WPG DataGrid: Comment modifier la ligne sélectionnée par programme?

Je change de changer l'élément et la cellule sélectionnés, mais je n'arrive pas à comprendre comment mettre toute la ligne en surbrillance.

Remarque: La surbrillance fonctionne correctement lorsqu'un utilisateur sélectionne une ligne à l'aide de la souris ou du clavier.

+0

Est-ce que cette solution fonctionne? http://stackoverflow.com/questions/1976087/wpf-datagrid-set-selected-row – Ragepotato

+0

Non. Je me demande si cela a quelque chose à voir avec la feuille de style. –

+0

Pour être plus précis, le lien que vous avez envoyé modifie la cellule sélectionnée, mais pas la ligne en surbrillance. –

Répondre

0

jeter un oeil à this page. Vous avez besoin à la fois du SelectionUnit et du SelectionMode pour spécifier comment la sélection est effectuée dans le DataGrid. Avec SelectionUnit = FullRow et SelectionMode = Single, l'utilisateur ne peut sélectionner qu'une ligne à la fois. Edit: après l'avoir essayé, il semblerait que DataGrid.SelectedItem[i] sélectionnera une ligne entière. Malheureusement, il semble que vous devrez définir manuellement la surbrillance dans un gestionnaire d'événements que vous devez créer pour la propriété SelectionChanged de DataGrid.

+0

J'ai déjà ces paramètres, la surbrillance fonctionne bien quand un utilisateur sélectionne une ligne avec la souris ou le clavier. J'ai besoin de savoir comment changer la sélection en utilisant le code. –

0

Il semble que SelectedItem ne soit récupéré qu'après l'événement Loaded de l'élément containg (par exemple UserControl). Cela semble fonctionner:

public partial class UserControlClass 
{ 
    public UserControlClass() 
    { 
     InitializeComponent(); 

     Loaded += UserControlClass_Loaded; 
    } 

    void UserControlClass_Loaded(object sender, System.Windows.RoutedEventArgs e) 
    { 
     if (YourItemsControl.Items.Count > 0) 
      YourItemsControl.SelectedItem = YourItemsControl.Items[0]; 
    } 
} 

Le code ci-dessus montrent le premier élément sélectionné si YourItemsControl est lié à une collection qui a des éléments qu'il contient.

Questions connexes