7
votes

(WPF DataGrid) Comment puis-je déterminer l'index de la colonne d'un élément

Comment puis-je retourner l'index de colonne d'un élément dans un fichier de données WPF lorsque je clique sur une cellule J'utilise Visual Studio 2010 / vb.net


0 commentaires

5 Réponses :


3
votes

datagridcells code> ne pas avoir de clic, ils ont un événement sélectionné code> mais qui est normalement tiré pour chaque cellule d'une ligne lorsque vous cliquez sur une cellule. gotfocus code> pourrait être un meilleur choix.

EG P>

    void CellClick(object sender, RoutedEventArgs e)
    {
        DataGridCell cell = sender as DataGridCell;
        MessageBox.Show(cell.Column.DisplayIndex.ToString());
    }


1 commentaires

Datagrid.columns.indexof (datagridcell.column) donne l'index correct pour trouver la cellule A à l'aide du présentateur (présage.itemcontainergénérer.Containerfromindex (index)) Même lorsque les colonnes ont été déplacées par l'utilisateur, l'indice d'affichage des colonnes ne fait pas



4
votes

Tout le monde raconte cette solution xxx pré>

et oui fonctionne, mais personne ne dit que nous devons définir l'index d'affichage d'abord à chaque colonne, peut-être qu'il est évident que les experts pour obtenir cela, Mais pour les novices, c'est une chose inconnue p>

Il existe deux façons de la définir: - P>

  1. Vous pouvez la définir dans la partie XAML. P>

    p> li> ol>

    Je ne sais pas comment le configurer pour les colonnes personnalisées telles que p> xxx pré>

    donc j'ai préféré l'inverse p>

    1. crée une fonction p>

      void privé SetDisplayindexForGridViewColonnes () { Int32 colonnesCount = dt.columns.compte; p>

      Int32 columnIndex = dataGridScannedFiles.SelectedCells[0].Column.DisplayIndex;
      


0 commentaires

9
votes

Vous pouvez utiliser directement le code directement pour obtenir l'index de colonne de cellules sélectionné.

int index = datagrid.SelectedCells[0].Column.DisplayIndex;


0 commentaires

8
votes

Vous avez essayé d'utiliser ceci à l'événement cliquez sur l'index de colonne?

int columnIndex = dataGrid.CurrentColumn.DisplayIndex;


2 commentaires

Cela pourrait fonctionner sur les formulaires Win Forms DataGrid, mais pas sur le DataGrid WPF. Ce dernier n'a pas de propriété actuelleColumn.


Cela m'a aidé, fonctionne parfaitement sur WPF DataGrid.



0
votes

Pour obtenir l'index de colonne du nom de colonne particulier de DataGrid (dans WPF à l'aide de LINQ) strong>

  int index = DataGrid.Columns.Single(c => c.Header.ToString() == "Department").DisplayIndex;


0 commentaires