IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

[SL4] CollectionView / ListCollectionView


Sujet :

Silverlight

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut [SL4] CollectionView / ListCollectionView
    Bonjour,

    Dans le cadre d'une application en Silverlight 4, avec pattern MVVM, j'aurais besoin de pouvoir exposer des vues depuis mon viewmodel, et non des collections observables, de façon à pouvoir activer le IsSynchronizedWithCurrentItem .

    En effet, en SL, le IsSynchronizedWithCurrentItem ne possède que les valeurs false ou null, donc soit désactivé, soit activé si la collection sous-jacente est naturellement une vue...

    Le problème, c'est que dans WPF pour cela on dispose des CollectionView et son implémentation ListCollectionView dans System.Windows.Data (assembly System.Windows.dll) alors que justement sous WPF on peut s'en passer dans la mesure où WPF supporte IsSynchronizedWithCurrentItem à true.
    Mais en Silverlight... Si on explore System.Windows.dll et tout particulièrement le namespace : System.Windows.Data... pas de CollectionView ni de ListCollectionView. On y trouve certes un CollectionViewSource, mais là encore rien avoir avec le CollectionViewSource de WPF...

    Donc comment faire? y-a-t-il une implémentation des vues identiques quelque part dans un autre namespace, ou une des autres assemblies de base Silverlight où dois je faire sans car cela n'existe pas ? ou y a t-il un composant tiers qui l'implémenterais ?

    Merci pour votre aide.

  2. #2
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Je crois que ce que tu cherches, c'est : System.Windows.Data.PagedCollectionView.

    Bon courage,

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Bon en fait, on entend dire par ci par là que Silverlight ne supporterait que ListCollectionView et EnumerableCollectionView, mais en fait, c'est un chouilla plus compliqué que cela...

    En effet, pour revenir à ce que j'ai dit, si vous vous donnez la peine de prendre l'explorateur d'objet, de le contraindre à Silverlight 4 et sélectionner l'assembly System.Windows.dll référencé dans un projet SL4, vous remarquerez que dans l'espace des nom System.Windows.Data ne figure que CollectionViewGroup et CollectionViewSource...
    Effectivement aucune implémentation de ICollectionView n'est directement accessible et ne peut être utilisée...

    J'ai finalement trouvé tout seul, il faut utiliser CollectionViewSource, de façon assez différente de ce qu'on à l'habitude d'utiliser sous WPF...

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class VM : ViewModelBase
    {
      ObservableCollection<Order> _orders;
      CollectionViewSource _view;
     
      public CollectionViewSource Orders { get { return _view; } }
     
      public VM()
      {
         // remplissage de _orders
         using (var ctx = new OrderContext())
         {
             _orders = new ObservableCollection<Order>(ctx.Orders);
         }
         _view = new CollectionViewSource() { Source = _orders };
      }
    }

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ListBox ItemsSource="{Binding Orders}" DisplayMember="Label" />

    Voilà en espérant que ca aidera certains qui chercheraient.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème : Test Unitaire CollectionView MVVM
    Par alves.seb dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 28/12/2012, 15h52
  2. Réponses: 0
    Dernier message: 19/03/2010, 14h36
  3. Page d'authentification SL4
    Par peephole83 dans le forum Silverlight
    Réponses: 5
    Dernier message: 16/03/2010, 22h07
  4. backward compatibilité sl4/ sl3
    Par Issam dans le forum Silverlight
    Réponses: 6
    Dernier message: 24/02/2010, 14h33
  5. ObservableCollection<T>.CollectionChanged à travers un ListCollectionView ?
    Par Chekov dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 03/11/2009, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo