none
Trie sur une ObservableCollection RRS feed

  • Question

  • Salut à tous,

    Comme le suggère le titre, je cherche à trier une ObservableCollection.

    J'ai essayé avec LINQ au départ (mais j'ai eu des problèmes, cf mon post http://social.msdn.microsoft.com/Forums/fr-FR/windows8developmentfr/thread/a7084ad0-f877-46bd-9bf7-792408bf7fca) :

    var ActiveSortedTasks = ActiveItems.OrderBy(BTask => BTask.Publication).Reverse();
    ObservableCollection<BTask> _ActiveBTasksSorted = new ObservableCollection<BTask>(ActiveSortedTasks);
    ActiveItems = _ActiveBTasksSorted;

    Du coup, j'ai ensuite essayé de faire directement un 

    ActiveItems.OrderBy(BTask => BTask.Publication).Reverse();

    pour trier la collection mais apparemment c'est un échec.

    J'ai vu qu'il y avait moyen de le faire directement dans le XAML via un CollectionViewSource.SortDescriptions mais ça ne fonctionne pas dans Metro.

    Quelqu'un aurait une solution élégante à me proposer?

    Merci d'avance!


    Christophe H.

    • Déplacé Aurel Bera jeudi 20 septembre 2012 13:25 (Origine :Développement Windows 8 )
    lundi 25 juin 2012 10:13

Réponses

Toutes les réponses

  • JE vais dire un truc bête, mais tu as essayé :

    ActiveItems = null;
    ActiveItems = new ObservableCollection<BTask>(ActiveSortedTasks);


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 25 juin 2012 22:00
  • Hello,

    La solution de Richard est la plus simple et efficace. En revanche, tu peux utiliser OrderByDescending plutôt que OrderBy suivit de reverse.

    Bon courage,


    Cyprien Autexier

    mardi 26 juin 2012 09:06
  • J'ai essayé mais c'est vraiment sans aucun effet. En tout cas ça ne fait pas ce que je veux.

    Mais j'ai résolu le problème en retirant tout bêtement toutes ces instructions.

    L'UI étant bindé sur mon ObservableCollection, on dirait que ça fonctionne tout seul.

    Merci pour le OrderByDescending par contre, je n'y avait pas pensé :p

    La magie de l'informatique c'est aussi ça : tu passes 3j à te prendre la tête sur un truc, tu reviens lundi matin, tu commentes 3lignes et là ça fonctionne.

    Tu te dis donc que : 

    1. Ou le Dieu de la programmation a juste envie de te faire c*** de temps en temps,
    2. tu n'es vraiment pas un bon programmeur,
    3. un peu des deux.

    Du coup, mieux vaut en rire qu'en pleurer! ;)


    Christophe H.

    mardi 26 juin 2012 13:31