gpt4 book ai didi

c# - 如何在 ReactiveUI、C# 中将一个可观察对象的 react 列表动态合并到一个可观察对象中

转载 作者:行者123 更新时间:2023-11-30 21:42:21 25 4
gpt4 key购买 nike

我正在尝试使用 ReactiveUI 来制定一些可观察对象。虽然有些东西已经运行良好,但我仍然无法为其他东西找到合适的 ReactiveUI 方法。我对 ReactiveUI 还是个新手。

public class ViewModel : ReactiveObject {
public ReactiveList<A> aList {get;}
}

public class A : ReactiveObject {
public ReactiveList<B> bList {get;}
}

public class B : ReactiveObject {
//some properties
}

我有一个 ReactiveList aList。它的项属于 ReactiveObjectA,其中包含另一个 ReactiveList bListbList 项作为 ReactiveObjectB 的属性。从 aList 开始,我如何对 aListbList 及其所有属性中的任何更改使用react?

我正在尝试这样的事情:

Observable.Merge(viewModel.aList.Select(x => Observable.Merge(x.bList.Select(y => y.Changed))))

但是,这只会在执行此代码时观察到 B 中已经存在的更改。有什么东西可以自动观察 aListbList 的变化并订阅新项目吗?

或者 Observable.Merge 可以观察 ReactiveList 并自动订阅任何新项目并取消订阅已删除的项目吗?

我知道,我可以手动完成,但这可能不会按照预期的方式使用 ReactiveUI。有什么想法吗?

最佳答案

Changed属性(property) ReactiveList列表更改时会通知您。使用它来了解何时更新订阅以包含 ReactiveList 中的更改。

获得一个每次都滴答作响的可观察对象 ReactiveList<A>ReactiveList<B>改变,你可以这样做:

aList.Changed
.Select(change => Observable.Merge(viewModel.aList.Select(x => Observable.Merge(x.bList.Select(y => y.Changed)))) // Create observable to notify when the sub collections change
.StartWith(change) // Send the notification that aList has changed immediately
)
.Switch() // Only subscribe to the latest change notifications from the sub collections in the most recent aList
.Subscribe(changes => { /* Do something */});

关于c# - 如何在 ReactiveUI、C# 中将一个可观察对象的 react 列表动态合并到一个可观察对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619567/

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