2010-04-30 4 views
0

J'ai ListView dont ItemsSource est défini sur ObservableCollection. L'utilisateur peut trier et filtrer ListView, en utilisant CollectionViewSource.GetDefaultView et en modifiant le filtre ICollectionView et SortDescriptions. Lorsque l'utilisateur clique avec le bouton droit sur une ligne, il peut ajouter un élément à la collection. Je veux que cette nouvelle ligne apparaisse au-dessous de la ligne à droite. Jusqu'à présent, toutes les méthodes que j'ai trouvées pour quelque chose comme ceci sont faites avec ListView.Items que je ne peux pas utiliser parce que je suis en train de définir la propriété ItemsSource.WPF ListView Insérer un élément à la position donnée lors de l'utilisation de ItemsSource

+0

faute de frappe? "soft et filter" = trier et filtrer? Cela signifie-t-il que vous voulez que l'élément nouvellement ajouté apparaisse hors de l'ordre de tri? En d'autres termes, quel que soit l'endroit où * il * aurait trié, il devrait toujours apparaître après la ligne droite cliquée? –

+0

typo corrigé - ty oui, le nouvel article sera hors service (jusqu'à ce que l'utilisateur trie à nouveau). C'est ainsi que le nouvel élément apparaît dans l'interface utilisateur et non hors de vue et l'utilisateur pense qu'il n'a pas été ajouté. – ViNull

+0

Pour résoudre ce problème, j'ai ajouté une nouvelle propriété à mes objets et je l'utilise pour "faire cuire" l'ordre de tri actuel, ajouter mon nouvel élément avec cette propriété à l'endroit où je veux l'afficher, puis définir les SortDescriptions à ce nouveau propriété. Il a le résultat souhaité, mais il semble qu'il existe une meilleure façon de gérer cela. – ViNull

Répondre

-1

Essayez ObservableCollectionName.Insert ((ListViewName.SelectedIndex + 1), ItemToInsert)

+0

Lors de l'utilisation de DefaultView pour le tri, l'ordre ListView ne correspond pas à l'ordre de la collection sous-jacente. – ViNull

Questions connexes