Wpf 动态CDATA删除排序

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

我正在使用反应式动态CDATA对我的收藏进行排序并更新WPF UI。我可以用一种简单的方法。问题是如何使项目排序回到其原始顺序?我应该在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;
    }
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:请记住接受答案以结束您的问题,如果您有其他问题,请提出新问题。提前谢谢。