我需要帮助了解最新推荐的方法,以便为WPF项目连接和使用reactiveui。
在互联网上进行有关反应的研究时,我发现了很长一段时间内的各种(少数)帖子,在这段时间里,图书馆的演变带来了不幸的结果,其中一些方法文章现在提到了旧的做事方式。已不再适用
我试图了解建议的连接命令的方法(通常是调用返回DTO的Web服务),我发现了提到的多种方法。
我目前的理解是
// this is the first thing to do
MyCommand = ReactiveCommand.Create()
// variations to wire up the delegates / tasks to be invoked
MyCommand.CreateAsyncTask()
MyCommand.CreateAsyncFunc()
MyCommand.CreateAsyncAction()
// this seems to be only way to wire handler for receiving result
MyCommand.Subscribe
// not sure if these below are obsolete?
MyCommand.ExecuteAsync
MyCommand.RegisterAsyncTask()
有人可以尝试解释哪些变体是最新的API,哪些是过时的,或许还有一些关于何时使用它们的文字
答案 0 :(得分:4)
此博客文章中记录了ReactiveCommand API的更改: http://log.paulbetts.org/whats-new-in-reactiveui-6-reactivecommandt/
第一个选项--ReactiveCommand.Create() - 只创建一个被动命令。 要定义一个从服务中异步返回数据的命令,您将使用:
MyCommand = ReactiveCommand.CreateAsyncTask(
canExec, // optional
async _ => await api.LoadSomeData(...));
您可以使用Subscribe方法处理收到的数据:
this.Data = new ReactiveList<SomeDTO>();
MyCommand.Subscribe(items =>
{
this.Data.Clear();
foreach (var item in items)
this.Data.Add(item);
}
尽管如此,最简单的方法是使用这样的ToProperty方法:
this._data = MyCommand
.Select(items => new ReactiveList<SomeDTO>(items))
.ToProperty(this, x => x.Data);
您已为Data定义输出属性:
private readonly ObservableAsPropertyHelper<ReactiveList<SomeDTO>> _data;
public ReactiveList<SomeDTO> Data
{
get { return _data.Value; }
}