当执行绑定到控件的ViewModel时,我希望将一个参数从视图传递给ReactiveCommand。参数应该是IJcUser类型的
所以我把这个命令定义如下:
public ReactiveCommand<IJcUser, Unit> UserTouchCommand;
UserTouchCommand = ReactiveCommand.CreateFromTask(user => RootViewModel.DisplayUserProfile(user));DisplayUserProfile的签名看起来像
Task DisplayUserProfile(IJcUser user);
但是编译器会抱怨,因为user来自CancelationToken类型,而不是预期的IJcUser。
我终于找到了一个解决方案,但不明白为什么第一种方法不起作用。
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(RootViewModel.DisplayUserProfile);发布于 2017-01-25 13:36:20
我终于找到了一个解决方案,但不明白为什么第一种方法不起作用。
因为您使用了ReactiveCommand.CreateFromTask方法的错误重载。委托user => RootViewModel.DisplayUserProfile(user)可以是Func<CancellationToken, Task>或Func<IJcUser, Task>。除非您告诉编译器,否则编译器无法知道是哪一个:
Func<IJcUser, Task> x = user => DisplayUserProfile(user);
UserTouchCommand = ReactiveCommand.CreateFromTask(x);或者,您可以明确说明类型参数:
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(DisplayUserProfile);https://stackoverflow.com/questions/41851919
复制相似问题