如何将 IObservable<IObservable<T>> 转换为 IObservable<IEnumerable<T>>?



我有一个关于鼠标左键状态的流:

var leftMouseButton = mouse.Select(x => x.LeftButton).DistinctUntilChanged();

然后我Window这个给我一个可观察对象的表示鼠标拖动:

var leftMouseDrag = mouse
    .Select(mouseState => new Point(mouseState.X, mouseState.Y))
    .DistinctUntilChanged()
    .Window(leftMouseButton.Where(x => x == ButtonState.Pressed), x => leftMouseButton.Where(y => y != x));

现在我想从leftMouseDrag中生成一个流,它给出了点的列表。每次用户完成拖动(LMB向下->移动-> LMB向上)时,它都应该显示鼠标移动过的位置列表。

如何将IObservable<IObservable<Point>>变为IObservable<IEnumerable<Point>> ?

Window操作符更改为Buffer操作符(此重载)。

运算符产生IObservable<IList<T>>,其中IListIEnumerable


基于OP注释的备选方案:

var leftMouseDragLists = leftMouseDrag.SelectMany(i => i.ToList());

相关内容

  • 没有找到相关文章

最新更新