SfDataPager перестает показывать исходную коллекцию, если я манипулирую ею. (Исходная коллекция заполнена асинхронно) - PullRequest
0 голосов
/ 15 марта 2020

XAML пейджера данных и сетки данных, в которой показана коллекция:

        <syncfusion:SfDataGrid ItemsSource="{Binding ElementName=dataPager,Path=PagedSource}" 
                               ColumnSizer="Auto"/>
        <syncfusion:SfDataPager x:Name="dataPager"
                                Source="{Binding Orders,IsAsync=True}"
                                PageSize="30"
                                HorizontalAlignment="Center"/>

У меня есть окно поиска, когда я пишу что-то в поле поиска, моя коллекция фильтруется относительно текста, который я пишу в окне поиска.

    SourceList<Order> ordersList;

    public JournalViewModel(NorthwindContext northwindContext)
    {
        ordersList = new SourceList<Order>();

        //Filling of Orders collection
        ordersList.Connect().
            ObserveOnDispatcher().
            Bind(out _ordersList).
            Subscribe();

        //When I write something in the search box this code runs
        this.WhenAnyValue(x => x.SearchTerm).
            Subscribe(newSearchTerm =>
            {
                if (string.IsNullOrEmpty(newSearchTerm))
                {
                    //Logic of reloading collection
                }
                else
                {
                    //Logic of filtering collection
                }
            });
      }

      //Source property of Text property of search box
      public string SearchTerm
      {
          get { return _searchTerm; }
          set { this.RaiseAndSetIfChan ged(ref _searchTerm, value); }
      }

      ReadOnlyObservableCollection<Order> _ordersList;
      public ReadOnlyObservableCollection<Order> Orders => _ordersList;

Таким образом, каждый раз, когда моей коллекцией манипулируют, пейджер данных останавливается, чтобы показать мою коллекцию. Почему это происходит и как заставить пейджер данных показывать отфильтрованную коллекцию?

Может быть полезно: Изначально у меня была проблема с отображением самой коллекции, потому что моя коллекция заполнялась посредством реактивного запроса. Я решил эту проблему, установив свойство привязки IsAsyn c в true.

EDIT 16.03.2020: например, если мне нужно очистить коллекцию, в которой хранится 830 элементов, а затем заполнить ее с новыми элементами я использую методы Clear и AddRange из DynamicData, SfDataPager не показывает отфильтрованную коллекцию. Но если я использую конструкцию foreach:

            foreach (var order in currentList)
                ordersList.Remove(order);

            foreach (var order in newList)
                ordersList.Add(order);

Пейджер данных показывает мне отфильтрованную коллекцию. Почему это происходит?

...