2016-06-27 2 views
0

Я искал Интернет для пейджинговой управления пользовательского кода, но не мог найти никого, которые удовлетворяют ниже условия:Хороший пример пейджинга пользовательского элемента управления в WPF

Примечание: Я принес все строки в одном вызове службы и сохранить коллекцию в родительском ViewModel (скажем ObservableCollection objMyList).

  1. Все пейджинговой логика PagingControlVM не xaml.cs файл

    не
  2. Нет плотно пара связывания между контролем пейджинговой и родительского контроля, как я только что падение PageControl в родительской страницы и создать только одно свойство зависимостей (позволяет MyDepProp) в файле PagingControl.xaml.cs.

  3. Когда PagingControl падение ParentControl, я использую это свойство зависимостей, чтобы связать с ObservableCollection objMyList (мне удалось до сих пор, но как я могу получить значение свойства зависимостей в PagingControlVM. Я хочу, чтобы получить значение MyDepProp в новом коллекции в PagingControlVM).

    Если я ошибаюсь, скажите мне хороший подход.

Спасибо за вашу помощь

+0

Я немного растерялся в вашем подходе. Так. вы хотите разбиение на страницы в MVVM. Это правильно? – Gopichandar

+0

Да. Я хочу, чтобы пейджинговый контроль соответствовал шаблону MVVM –

+0

@ Верма, я обновил свой ответ. Надеюсь, это вам поможет. – Gopichandar

ответ

0

Прежде всего, нет никакой необходимости PagingControlVM здесь. Вам нужно иметь собственный class, унаследованный от CollectionView (скажем PagingCollectionView), где должны находиться все ваши поисковые логики. Затем вы должны создать экземпляр PagingCollectionView как objMyList в своей родительской модели, которую можно передать на UserControlItemsSource.

Для получения дополнительной информации: Own CollectionView for paging, sorting and filtering

Редактировать основанный на ваш комментарий:

Если вы хотите изменить список, изменения будут уведомлены, как мы реализовали PagingCollectionView от CollectionView.

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, который будет отправлен в UI.

Надеюсь, что это поможет.

+0

Назначение UserControl просто отбрасывает его в родительском xaml и использует его. Согласно вашему комментарию (вы должны создать экземпляр PagingCollectionView как objMyList в своей родительской модели просмотра) Мне нужно изменить мою родительскую виртуальную машину, которая неверна. –

+0

@ A.Verma Да, вы можете изменить ParenVM, который будет отражен, так как «PagingCollectionView» из изменений «CollectionView» будет уведомлен как «ObservableCollection». – Gopichandar

+0

@ A.Verma См. Мой обновленный ответ о том, как изменить список. – Gopichandar