2011-11-04 18 views
6

¿Existe una implementación de PagedCollectionView en WPF? Existe en Silverlight pero no está en WPF.Vista de colección paginada en WPF

Si no existe, ¿cuál sería la forma más sencilla de implementar esto?

+0

duplicado Posible de http://stackoverflow.com/questions/784726/how-can-i-paginate-a-wpf-datagrid –

Respuesta

2

Simplemente puede tomar el código del Silverlight one y usarlo en su proyecto WPF.

+0

Lo siento, sé que esto es muy viejo, pero siento que me falta algo aquí, parece que hay un todo un montón de dependencias que también necesitarían porting? –

+0

Ha pasado mucho tiempo. Creo que hay algunas dependencias, pero todas están muy localizadas y son fáciles de copiar. –

+2

Gracias Kent, encontré este enlace que contenía todo lo necesario: https://silverlight.svn.codeplex.com/svn/Release/Silverlight4/Source/System.Windows.Data/PagedCollectionView/ para cualquier otra persona que encuentre esto. –

0

O utilice sólo la clase CollectionView y "doble filtro" su colección

solución encontrada aquí: Own CollectionView for paging, sorting and filtering

me ha pegado el código snipet aquí para su conveniencia:

 // 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

¿Por qué te molestas en responder una pregunta muy antigua que tiene una respuesta seleccionada? – Edward

Cuestiones relacionadas