gpt4 book ai didi

c# - 在 MVVM 中使用 Rx 跟踪集合更改

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:48 25 4
gpt4 key购买 nike

我有一个使用 MVVM 模式编写的跨平台项目(没有使用特定的框架,只是自己编写的实现)。项目有几个独立的模块,每个模块都有几个页面。每个页面都有 ViewModel 和某种负责面向数据的逻辑(获取、保存、删除、转换等)的管理器。所以数据流看起来是这样的:

虚拟机 -> 管理器 -> 服务 -> 管理器 -> 虚拟机

加载虚拟机时,它会向管理器请求数据。管理器执行服务调用,获取数据,从 DTO 构造模型集合,将此集合返回给 ViewModel,ViewModel 将模型集合转换为 ViewModel 集合在列表中呈现。

现在我正在寻找一种使用 Rx 实现这种逻辑的方法。大多数页面都有一个要编辑的主列表(插入、删除、修改的项目)和几个支持集合(某些组合框的提供者以从中选择值)。支持集合可以通过标准的异步/等待调用或通过将任务转换为 Rx 轻松检索——它们没有问题。但是可修改的列表是。我只是想不出在不破坏 Rx 逻辑的情况下在页面的整个生命周期内跟踪此列表中的更改的方法。我可以选择订阅:

  • IEnumerable<Model>
  • Task<IEnumerable<Model>>
  • IObservable<IEnumerable<Model>>

但我想我必须订阅 IObservable<Model>因为我需要一种方法来跟踪个人的变化。我需要一种方法来通过添加、删除或编辑等其他方法修改此集合。所以我应该创建 IObservable通过Observable.Create (或其他方法)并存储 IObserver在经理内部某处调用 OnNextOnError在其他方法?但它看起来不像是 Rx-way-to-do。你对我的问题有什么建议吗?任何建议表示赞赏。谢谢。

PS:你可能会说 Rx 不是解决我跟踪可修改列表问题的最佳方法,因为它不是无穷无尽的事件流,我必须自己推送修改,但 Rx 有非常方便的过滤数据和处理错误的方法所以我真的很期待在应用程序中实现它。

最佳答案

ReactiveList<T> - 它是 ReactiveUI 的一部分框架,我们已将其用于 MVVM/WPF UI。

关于c# - 在 MVVM 中使用 Rx 跟踪集合更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com