2009-09-04 7 views
2

Je dois synchroniser l'ordre des colonnes de deux événements ListViews lorsque l'utilisateur change la commande. Mais il semble qu'il n'y ait pas d'événement de réorganisation de colonne.WPF Listview: événement de réorganisation de colonne?

Pour l'instant je viens de faire un AllowsColumnReorder = "False" mais ce n'est pas une solution permanente. En cherchant sur le net j'ai trouvé beaucoup de gens avec le même problème mais pas de solution. Ce qui peut être fait?

Répondre

9

Je ne suis pas sûr que cela fonctionne, mais vous pouvez probablement tirer profit du fait que GridView.Columns est un ObservableCollection: vous pouvez souscrire à l'événement CollectionChanged et gérer le cas où Action = Move

GridView gridView = (GridView)listView.View; 
gridView.Columns.CollectionChanged += gridView_CollectionChanged; 

private void gridView_CollectionChanged(object sender, CollectionChangedEventArgs e) 
{ 
    if (e.Action == NotifyCollectionChangedAction.Move) 
    { 
     string msg = string.Format("Column moved from position {0} to position {1}", e.OldIndex, e.NewIndex); 
     MessageBox.Show(msg); 
    } 
} 
+2

fonctionne très bien jusque là. La syntaxe a changé un peu. Utilisez NotifyCollectionChangedEventArgs, e.OldStartingIndex et e.NewStartingIndex – TalkingCode

+0

@TalkingCode Merci! Cette modification était nécessaire pour utiliser ce code dans .NET4. –