我正在切换到最新版本的ReactiveUI(7.0),遇到了一些不兼容问题,并且想知道建议的处理方式:
ReactiveUI 6.x
Texts.Events().MouseUp
.InvokeCommand(ViewModel, x => x.DoSomething);
现在,这将引发异常:
我通过使用以下代码修复了此问题,但这是正确的方法吗?
Texts.Events().MouseUp
.Select(x => Unit.Default)
.InvokeCommand(ViewModel, x => x.DoSomething);
最佳答案
该命令所期望的参数是Unit,表示没有输入参数的命令,在ReactiveUI的情况下为ReactiveCommand。这就是为什么在上面的示例中,您必须将MouseButtonEventArgs从事件“转换”为单元的原因。为此,我创建了一个辅助扩展方法ToSignal:
public static IObservable<Unit> ToSignal<TDontCare>(this IObservable<TDontCare> source)
=> source.Select(_ => Unit.Default);
\\ The subscription will be then
Texts.Events().MouseUp
.ToSignal()
.InvokeCommand(ViewModel, x => x.DoSomething);
关于c# - ReactiveUI 7的InvokeCommand参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41229903/