【问题标题】:DynamicData Remove Sort动态数据删除排序
【发布时间】:2020-10-09 09:17:22
【问题描述】:

我正在使用 Reactive DynamicData 对我的集合进行排序并更新 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;
    }

【问题讨论】:

    标签: wpf reactive dynamic-data


    【解决方案1】:

    您排序的IChangeSet&lt;T&gt; 不会在某处存储项目的先前排序,因此除非您知道该集合最初是如何排序的,否则无法恢复“原始”顺序并使用相同的IComparer&lt;T&gt;

    我在 DoSort() 中发送什么以便它返回到未排序的原始顺序?

    IComparer&lt;T&gt; 基本上按原始顺序对项目进行排序。

    【讨论】:

    • 我害怕那个。谢谢
    • @MiddleTommy:请记住接受答案以关闭您的问题,如果您有其他问题,请提出新问题。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多