WPF ListView のソートとページングを実装する方法

WPFでListViewをソートおよびページ表示するには、次の手順に従います。

  1. ListView コントロールを XAML ファイルに追加する:
<ListView x:Name="listView" 
          Grid.Row="1" 
          Grid.Column="0" 
          Grid.ColumnSpan="2" 
          ItemsSource="{Binding Items}" 
          SelectedItem="{Binding SelectedItem}" 
          IsSynchronizedWithCurrentItem="True">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="120"/>
            <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="80"/>
            <GridViewColumn Header="Gender" DisplayMemberBinding="{Binding Gender}" Width="80"/>
            <!-- 其他列 -->
        </GridView>
    </ListView.View>
</ListView>
  1. ViewModelで、ListViewのItemsSourceにバインドするItemsプロパティと、ListViewのSelectedItemにバインドするSelectedItemプロパティを作成する。
public class ViewModel : INotifyPropertyChanged
{
    private ObservableCollection<Item> _items;
    private Item _selectedItem;

    public ObservableCollection<Item> Items
    {
        get { return _items; }
        set
        {
            _items = value;
            OnPropertyChanged("Items");
        }
    }

    public Item SelectedItem
    {
        get { return _selectedItem; }
        set
        {
            _selectedItem = value;
            OnPropertyChanged("SelectedItem");
        }
    }

    // 其他属性和方法

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}
  1. ViewModelにソート・ページング処理を追加する
private void Sort(string propertyName, ListSortDirection sortDirection)
{
    ICollectionView view = CollectionViewSource.GetDefaultView(Items);
    view.SortDescriptions.Clear();
    view.SortDescriptions.Add(new SortDescription(propertyName, sortDirection));
    view.Refresh();
}

private void Page(int pageIndex, int pageSize)
{
    ICollectionView view = CollectionViewSource.GetDefaultView(Items);
    view.PageSize = pageSize;
    view.MoveToPage(pageIndex);
    view.Refresh();
}
  1. ViewModelのコンストラクタで項目プロパティを初期化して、並べ替えとページングを必要に応じて実行する。
public ViewModel()
{
    // 初始化Items属性

    Sort("Name", ListSortDirection.Ascending); // 按照Name列升序排序
    Page(0, 10); // 默认显示第一页,每页显示10条记录
}

これらの手順に従うことで、WPFでListViewの並び替えとページング機能を実装できます。実際の要件に応じて、ViewModelで並び替えとページングの方法を提供し、XAMLで関連するコマンドをバインドしてこれらの方法をトリガーできます。

bannerAds