2016-06-27 1 views
0

Je recherche Internet pour le code de contrôle utilisateur d'échange mais n'a pas pu trouver quelqu'un qui satisfait ci-dessous la condition:bon exemple de contrôle Paging utilisateur dans WPF

Note: Je récupéré toutes les lignes d'un appel de service et de stocker la collection parent viewmodel (disons ObservableCollection objMyList).

  1. Toute la logique d'échange dans PagingControlVM pas xaml.cs fichier

  2. Pas étroitement couple de liaison entre le contrôle d'appel et le contrôle des parents comme je viens de déposer la PageControl en page et à créer une seule propriété de dépendance (permet dites MyDepProp) dans le fichier PagingControl.xaml.cs.

  3. Lorsque goutte PagingControl à ParentControl, j'utiliser cette propriété de dépendance pour se lier à ObservableCollection objMyList (je réussis à ce jour, mais comment je peux obtenir la valeur de la propriété de dépendance à PagingControlVM. Je veux obtenir la valeur de MyDepProp dans la nouvelle collection dans PagingControlVM).

    Si je fais mal, dites-moi une bonne approche.

Merci pour votre aide

+0

Je suis un peu confus à votre approche. Alors. vous voulez une pagination dans MVVM. Est-ce correct? – Gopichandar

+0

Oui.Je veux que le contrôle de pagination suive le modèle MVVM –

+0

@Verma, j'ai mis à jour ma réponse. J'espère que cela vous aidera. – Gopichandar

Répondre

0

Tout d'abord, il n'y a pas besoin de PagingControlVM ici. Ce dont vous avez besoin est d'avoir un class hérité de CollectionView (disons PagingCollectionView) où toutes vos logiques de pagination devraient être là. Ensuite, vous devez créer une instance de PagingCollectionView en tant que objMyList dans votre modèle de vue parent, qui peut être transmise au ItemsSourceUserControl.

Pour plus d'informations: Own CollectionView for paging, sorting and filtering

Modifier en fonction de votre commentaire:

Si vous souhaitez modifier la liste, les changements seront avisés que nous avons mis en œuvre le PagingCollectionView de CollectionView.

private ObservableCollection<string> _objMyList ; 

    public ObservableCollection<string> objMyList 
    { 
     get { return _list; } 
     set { _list = value; } 
    } 

    private PagingCollectionView _pagingsource;  

    public PagingCollectionView PagingSource 
    { 
     get 
     { 
      if(_pagingsource == null) 
       _pagingsource = new PagingCollectionView(List, 5);     
      return _pagingsource; 
     } 
    } 

Liez le PagingSource à l'interface utilisateur. Vous pouvez toujours modifier le objMyList qui sera notifié à l'interface utilisateur.

Espérons que cela aide.

+0

Le but de UserControl est simplement de le déposer dans le parent xaml et de l'utiliser. D'après votre commentaire (vous devez créer une instance de PagingCollectionView en tant que objMyList dans votre viewmodel parent), j'ai besoin de modifier ma VM mère qui est fausse. –

+0

@ A.Verma Oui, vous pouvez modifier le ParenVM qui sera reflété puisque 'PagingCollectionView' est de' CollectionView' les modifications seront notifiées comme 'ObservableCollection'. – Gopichandar

+0

@ A.Verma Voir ma réponse mise à jour sur la façon de changer la liste. – Gopichandar