2011-11-04 2 views
6

Esiste un'implementazione di PagedCollectionView in WPF? Esiste in Silverlight ma non è in WPF.Visualizzazione raccolta impaginata in WPF

Se non c'è, quale sarebbe il modo più semplice per implementarlo?

+0

Eventuali duplicati di http://stackoverflow.com/questions/784726/how-can-i-paginate-a-wpf-datagrid –

risposta

2

È sufficiente prendere il codice dallo Silverlight one e utilizzarlo nel progetto WPF.

+0

Scusa, so che questo è davvero vecchio ma sento che mi manca qualcosa qui, sembra esserci un intero un mucchio di dipendenze che avrebbero anche bisogno porting? –

+0

È passato molto tempo. Credo che ci siano alcune dipendenze, ma sono tutte molto localizzate e facili da copiare. –

+2

Grazie Kent, ho trovato questo collegamento che conteneva tutto il necessario: https://silverlight.svn.codeplex.com/svn/Release/Silverlight4/Source/System.Windows.Data/PagedCollectionView/ per chiunque altro trovando questo. –

0

Oppure utilizzare solo la classe CollectionView e "doppio filtro" la vostra collezione

soluzione trovata qui: Own CollectionView for paging, sorting and filtering

Ho incollato il pezzo di codice presentato qui per la vostra comodità:

 // obtenir la CollectionView 
     ICollectionView cvCollectionView = CollectionViewSource.GetDefaultView(this.Suivis); 
     if (cvCollectionView == null) 
      return; 

     // filtrer ... exemple pour tests DI-2015-05105-0 
     cvCollectionView.Filter = p_oObject => { return true; /* use your own filter */ }; 

     // page configuration 
     int iMaxItemPerPage = 2; 
     int iCurrentPage = 0; 
     int iStartIndex = iCurrentPage * iMaxItemPerPage; 

     // déterminer les objects "de la page" 
     int iCurrentIndex = 0; 
     HashSet<object> hsObjectsInPage = new HashSet<object>(); 
     foreach (object oObject in cvCollectionView) 
     { 
      // break if MaxItemCount is reached 
      if (hsObjectsInPage.Count > iMaxItemPerPage) 
       break; 

      // add if StartIndex is reached 
      if (iCurrentIndex >= iStartIndex) 
       hsObjectsInPage.Add(oObject); 

      // increment 
      iCurrentIndex++; 
     } 

     // refilter 
     cvCollectionView.Filter = p_oObject => 
     { 
      return hsObjectsInPage.Contains(p_oObject); 
     }; 
+0

Perché dovresti preoccuparti di rispondere a una domanda vecchia che ha una risposta selezionata? – Edward