Wpf 动态CDATA删除排序
我正在使用反应式动态CDATA对我的收藏进行排序并更新WPF UI。我可以用一种简单的方法。问题是如何使项目排序回到其原始顺序?我应该在DoSort()中发送什么以便它返回到未排序的原始顺序Wpf 动态CDATA删除排序,wpf,reactive,dynamic-data,Wpf,Reactive,Dynamic Data,我正在使用反应式动态CDATA对我的收藏进行排序并更新WPF UI。我可以用一种简单的方法。问题是如何使项目排序回到其原始顺序?我应该在DoSort()中发送什么以便它返回到未排序的原始顺序 IObservable<IChangeSet<T>> set; Subject<IComparer<T>> _sorting; Subject<Unit> _resorting; ReadOnlyObservable
IObservable<IChangeSet<T>> set;
Subject<IComparer<T>> _sorting;
Subject<Unit> _resorting;
ReadOnlyObservableCollection<T> _itemset;
private SortExpressionComparer<T> _currentSort;
private void DoSort(IComparer<T> sort)
{
_sorting?.OnNext(sort);
//Resort();
}
public void Resort()
{
_resorting?.OnNext(Unit.Default);
}
public ReadOnlyObservableCollection<T> ItemSet()
{
if (_itemset is null)
{
_sorting = new Subject<IComparer<T>>();
_resorting = new Subject<Unit>();
set.Sort(_sorting, resort: _resorting).ObserveOnDispatcher().Bind(out var list).Subscribe();
_itemset = list;
DefaultSort();
}
return _itemset;
}
IObservable集;
主题分类;
主体诉诸;
ReadOnlyObservableCollection\u项目集;
专用分拣机XPressionComparer\u currentSort;
专用void DoSort(IComparer排序)
{
_排序?.OnNext(排序);
//度假村();
}
公共度假酒店()
{
_重置?.OnNext(单位默认值);
}
public ReadOnlyObservableCollection项目集()
{
如果(_itemset为空)
{
_排序=新主题();
_诉诸=新主题();
set.Sort(_sorting,resort:_restoring).ObserveOnDispatcher().Bind(out var list.Subscribe();
_itemset=列表;
DefaultSort();
}
返回_itemset;
}
您排序的IChangeSet
不会将项目的先前排序存储在某个位置,因此无法恢复“原始”顺序,除非您知道集合最初是如何排序的,并使用相同的IComparer
对其再次排序
我应该在DoSort()中发送什么以便它返回到未排序的原始顺序
IObservable<IChangeSet<T>> set;
Subject<IComparer<T>> _sorting;
Subject<Unit> _resorting;
ReadOnlyObservableCollection<T> _itemset;
private SortExpressionComparer<T> _currentSort;
private void DoSort(IComparer<T> sort)
{
_sorting?.OnNext(sort);
//Resort();
}
public void Resort()
{
_resorting?.OnNext(Unit.Default);
}
public ReadOnlyObservableCollection<T> ItemSet()
{
if (_itemset is null)
{
_sorting = new Subject<IComparer<T>>();
_resorting = new Subject<Unit>();
set.Sort(_sorting, resort: _resorting).ObserveOnDispatcher().Bind(out var list).Subscribe();
_itemset = list;
DefaultSort();
}
return _itemset;
}
一个基本上按原始顺序对项目进行排序的
I比较程序。我很害怕。Thanks@MiddleTommy:请记住接受答案以结束您的问题,如果您有其他问题,请提出新问题。提前谢谢。