我正在尝试执行一个命令,以便我在视图的构造函数中异步运行的函数。我知道在构造函数中异步运行某些东西并不一定是好的实践,但是当视图打开时,我需要加载一个datagrid,这需要3-5秒的时间,所以我想我可以加载一个带有IsLoading
属性的进度条,而获取数据的命令则在一个单独的线程上运行。
以下是执行上述操作的命令/属性声明:
public ReactiveCommand EnterCmd { get; private set; }
ObservableAsPropertyHelper<bool> _isLoading;
public bool IsLoading => _isLoading.Value;
下面是我在构造函数中的实例化:
EnterCmd = ReactiveCommand.CreateFromTask(LoadGridData);
EnterCmd.IsExecuting.ToProperty(this, x => x.IsLoading, out _isLoading);
我想通过执行类似于
EnterCmd.Execute()
的操作来运行start my command。值得注意的是,我确实发现了一个类似的问题here,但是
Execute()
似乎不再是ReactiveCommand
上的有效方法。任何想法都会很感激的。 最佳答案
除了jon的回答,您还需要确保访问的是ReactiveCommand<TParam, TResult>
,而不仅仅是ReactiveCommand
(这是一个没有执行概念的基类)。
因此,请确保EnterCmd
属性的类型正确,例如ReactiveCommand<Unit, Unit>
。