I am trying to follow this to do my listview paging but nothing shows up in my listview at all.
http://code.msdn.microsoft.com/windowsdesktop/CSWPFPaging-ce1ce482
Is it because the way I am binding? In debug mode, the CollectionViewSource & ObservableCollection have items in them but it doesn't show on listview.
<Control.Resources><local:WidthFourConverter x:Key="widthFourConverter" /><local:HeightConverter x:Key="heightConverter" /><DataTemplate x:Key="Type"> <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,0,0,0"><Border BorderThickness="2" BorderBrush="Black"><Image x:Name="TypeImg" Source="{Binding Type}" MouseLeftButtonDown="AdvanceSearchResultsFilter_MouseLeftButtonDown" /></Border></StackPanel> </DataTemplate><DataTemplate x:Key="Language"><StackPanel Orientation="Horizontal" Margin="0,0,0,0"><Border BorderThickness="2" BorderBrush="Black"><Image x:Name="LanguageImg" Source="{Binding Language}" MouseLeftButtonDown="AdvanceSearchResultsFilter_MouseLeftButtonDown" /></Border></StackPanel></DataTemplate><DataTemplate x:Key="ArtistType"><StackPanel Orientation="Horizontal" Margin="0,0,0,0"><Border BorderThickness="2" BorderBrush="Black"><Image x:Name="ArtistTypeImg" Source="{Binding ArtistType}" MouseLeftButtonDown="AdvanceSearchResultsFilter_MouseLeftButtonDown" /></Border></StackPanel></DataTemplate><DataTemplate x:Key="Popularity"><StackPanel Orientation="Horizontal" Margin="0,0,0,0" ><Border BorderThickness="2" BorderBrush="Black"><Image x:Name="PopularityImg" Source="{Binding Popularity}" MouseLeftButtonDown="AdvanceSearchResultsFilter_MouseLeftButtonDown" /></Border></StackPanel></DataTemplate> </Control.Resources><Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SizeChanged="Grid_SizeChanged"><ListView x:Name="ResultsLstVw" SizeChanged="ResultsLstVw_SizeChanged" ScrollViewer.HorizontalScrollBarVisibility="Disabled"><ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="Height" Value="{Binding ElementName=ResultsLstVw, Path=ActualHeight, Converter={StaticResource heightConverter}}" /> <Setter Property="Margin" Value="2"/></Style></ListView.ItemContainerStyle><ListView.View> <GridView><GridView.ColumnHeaderContainerStyle><Style><Setter Property="FrameworkElement.Visibility" Value="Collapsed"/></Style></GridView.ColumnHeaderContainerStyle><GridViewColumn Header="Type" Width="{Binding ElementName=ResultsLstVw, Path=ActualWidth, Converter={StaticResource widthFourConverter}}" CellTemplate="{StaticResource Type}" /><GridViewColumn Header="Language" Width="{Binding ElementName=ResultsLstVw, Path=ActualWidth, Converter={StaticResource widthFourConverter}}" CellTemplate="{StaticResource Language}" /><GridViewColumn Header="ArtistType" Width="{Binding ElementName=ResultsLstVw, Path=ActualWidth, Converter={StaticResource widthFourConverter}}" CellTemplate="{StaticResource ArtistType}" /><GridViewColumn Header="Popularity" Width="{Binding ElementName=ResultsLstVw, Path=ActualWidth, Converter={StaticResource widthFourConverter}}" CellTemplate="{StaticResource Popularity}" /> </GridView> </ListView.View> </ListView> </Grid>
public static ObservableCollection<Result> result = new ObservableCollection<Result>(); public static int currentPageIndex = 0; public static int itemPerPage = 3; public static int totalPage = 0; public static CollectionViewSource view = new CollectionViewSource(); public SearchResultsUsrCntrl() { InitializeComponent(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { Search(); } public void Search() { #region Test data int itemcount = 10; for (int i = 0; i < itemcount; i++) { result.Add(new Result { Id = i.ToString(CultureInfo.InvariantCulture), Type = @"pack://application:,,,/Searches/Images/Pic1.png", Language = "pack://application:,,,/Searches/Images/Pic2.png", Popularity = "pack://application:,,,/Searches/Images/Pic3.png", }); } #endregion // Calculate the total pages totalPage = itemcount / itemPerPage; if (itemcount % itemPerPage != 0) { totalPage += 1; } view.Source = result; view.Filter += new FilterEventHandler(view_Filter); ResultsLstVw.DataContext = view; } void view_Filter(object sender, FilterEventArgs e) { int index = result.IndexOf((Result)e.Item); if (index >= itemPerPage * currentPageIndex && index < itemPerPage * (currentPageIndex + 1)) { e.Accepted = true; } else { e.Accepted = false; } }