2016-06-27 25 views
0

Ich suchte Internet Funkrufnutzer Steuercode, konnte aber nicht, dass jemand, der unter Bedingung erfüllen finden:Gutes Beispiel für Paging User Control in WPF

Hinweis: Ich holte alle Zeilen in einem Service-Aufruf und speichern Sie die Sammlung in Mutteransichtsmodell (sagen wir ObservableCollection objMyList).

  1. All Logik Paging in PagingControlVM nicht in xaml.cs Datei

  2. Nein fest Paar Bindung zwischen Paging-Steuerung und übergeordnetem Steuerelement wie mir die Pagecontrol in übergeordneter Seite falle nur und nur eine Abhängigkeitseigenschaft erstellen (lassen sagen MyDepProp) in PagingControl.xaml.cs-Datei.

  3. Wenn PagingControl Drop in Parent, verwende ich diese Abhängigkeitseigenschaft mit ObservableCollection objMyList (ich bisher erfolgreich zu binden, aber, wie ich den Wert der Abhängigkeitseigenschaft in PagingControlVM bekommen kann. Ich mag den Wert von MyDepProp in neuen bekommen Sammlung in PagingControlVM).

    Wenn ich falsch mache, sagen Sie mir bitte guten Ansatz.

Danke für Ihre Hilfe

+0

Im bisschen verwirrt auf Ihrem Ansatz. Damit. Sie möchten die Paginierung in MVVM. Ist das richtig? – Gopichandar

+0

Ja. Ich möchte Paging-Steuerelement zu MVVM Muster folgen –

+0

@Verma, ich habe meine Antwort aktualisiert. Hoffe das wird dir helfen. – Gopichandar

Antwort

0

Zunächst einmal gibt es keine Notwendigkeit von PagingControlVM hier. Was Sie brauchen, ist eine eigene class geerbt von CollectionView (sagen Sie PagingCollectionView) wo alle Ihre Paging-Logiken sollten da sein. Dann müssen Sie in Ihrem übergeordneten Viewmodell eine Instanz PagingCollectionView als objMyList erstellen, die an die ItemsSource übergeben werden kann.

Für weitere Informationen: Own CollectionView for paging, sorting and filtering

bearbeiten basierend auf Ihren Kommentar:

Wenn Sie die Liste ändern möchten, werden Änderungen automatisch benachrichtigt, wenn wir die PagingCollectionView von CollectionView umgesetzt haben.

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; 
     } 
    } 

Bind die PagingSource an der Benutzeroberfläche. Sie können immer die objMyList ändern, die der Benutzeroberfläche mitgeteilt wird.

Hoffe, dass hilft.

+0

Zweck von UserControl ist nur Drop in Eltern XAML und verwenden Sie es. Gemäß Ihrem Kommentar (Sie müssen eine Instanz von PagingCollectionView als objMyList in Ihrem übergeordneten Viewmodel erstellen) muss ich meine Parent-VM ändern, die falsch ist. –

+0

@ A.Verma Ja, Sie können die ParenVM ändern, die reflektiert wird, da 'PagingCollectionView' aus' CollectionView' stammt. Änderungen werden als 'ObservableCollection' gemeldet. – Gopichandar

+0

@ A.Verma Siehe meine aktualisierte Antwort, wie man die Liste ändert. – Gopichandar