数据分页器和显示收集的数据网格的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;
因此,每次操作我的收藏集时,数据寻呼机都会停止显示我的收藏集。为什么会发生这种情况,以及如何使数据寻呼机显示过滤后的集合?
可能有用:最初,我无法显示集合本身,因为我的集合是通过响应请求填充的。我已经通过将绑定的IsAsync属性设置为true解决了此问题。
EDIT 16.03.2020:例如,如果我需要清除保留830个项目的集合,然后用新项目填充它,则我使用DynamicData的Clear
和AddRange
方法,SfDataPager不显示过滤的集合。但是,如果我使用foreach
构造:
foreach (var order in currentList)
ordersList.Remove(order);
foreach (var order in newList)
ordersList.Add(order);
数据传呼机显示过滤后的集合。为什么会发生这种情况?
我们已经用SfDataPager检查了所报告的问题,但是很遗憾,我们无法复制所报告的问题。从我们的角度来看一切正常。请参考以下示例。