【问题标题】:Good example of Paging User Control in WPFWPF中分页用户控件的好例子
【发布时间】:2016-10-29 07:32:54
【问题描述】:

我在网上搜索了分页用户控制代码,但找不到满足以下条件的人:

注意:我在一次服务调用中获取了所有行并将集合存储在父视图模型中(比如说 ObservableCollection objMyList)。

  1. PagingControlVM 中的所有分页逻辑不在 xaml.cs 文件中

  2. 分页控件和父控件之间没有紧密耦合绑定,就像我只是将页面控件放在父页面中并在 PagingControl.xaml.cs 文件中只创建一个依赖属性(比如说 MyDepProp)。

    李>
  3. 当 PagingControl 放入 ParentControl 时,我使用此依赖属性与 ObservableCollection objMyList 绑定 (到目前为止我成功了,但是我如何在 PagingControlVM 中获取依赖属性的值。我想在 PagingControlVM 的新集合中获取 MyDepProp 的值)。

    如果我做错了,请告诉我好的方法。

感谢您的帮助

【问题讨论】:

  • 我对你的方法有点困惑。所以。你想在 MVVM 中进行分页。对吗?
  • 是的。我希望分页控制遵循 MVVM 模式
  • @Verma ,我已经更新了我的答案。希望对您有所帮助。

标签: wpf controls paging


【解决方案1】:

首先,这里不需要PagingControlVM。你需要有一个自己的class 继承自CollectionView(比如PagingCollectionView),你所有的分页逻辑都应该在那里。然后,您必须在父视图模型中创建PagingCollectionView 的实例作为objMyList,该实例可以传递给UserControlItemsSource

欲了解更多信息:Own CollectionView for paging, sorting and filtering

根据您的评论进行修改:

如果您想更改列表,将通知更改,因为我们已经从 CollectionView 实施了 PagingCollectionView

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

PagingSource 绑定到用户界面。您可以随时更改将通知 UI 的objMyList

希望对您有所帮助。

【讨论】:

  • UserControl 的目的只是将它放在父 xaml 中并使用它。根据您的评论(您必须在父视图模型中将 PagingCollectionView 的实例创建为 objMyList),我需要修改错误的父 VM。
  • @A.Verma 是的,您可以修改将反映的 ParenVM,因为PagingCollectionView 来自CollectionView,更改将作为ObservableCollection 进行通知。
  • @A.Verma 查看我关于如何更改列表的更新答案。
  • 我只是想在不修改父视图模型的情况下使用分页用户控件,但根据您的评论,我将不得不在我的父视图模型中编写以下代码,对吗?公共 PagingCollectionView PagingSource { get { if(_pagingsource == null) _pagingsource = new PagingCollectionView(List, 5);返回_pagingsource; } }
  • @A.Verma 是的。你说的对。你必须把它写在parenVM中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2013-12-16
  • 2016-09-18
  • 1970-01-01
相关资源
最近更新 更多