我想在执行绑定到控件的ReactiveCommand时将参数从View传递给ViewModel。参数应为类型IJcUser
所以我这样定义命令:
public ReactiveCommand<IJcUser, Unit> UserTouchCommand;
UserTouchCommand = ReactiveCommand.CreateFromTask(user => RootViewModel.DisplayUserProfile(user));
Run Code Online (Sandbox Code Playgroud)
的签名DisplayUserProfile看起来像
Task DisplayUserProfile(IJcUser user);
但是编译器抱怨是因为user来自类型CancelationToken而不是预期的IJcUser
我终于找到了解决方案,但不明白为什么第一种方法不起作用。
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(RootViewModel.DisplayUserProfile);
Run Code Online (Sandbox Code Playgroud)
我终于找到了解决方案,但不明白为什么第一种方法不起作用。
因为您使用了错误的ReactiveCommand.CreateFromTask方法重载。委托user => RootViewModel.DisplayUserProfile(user)可以是Func<CancellationToken, Task>或Func<IJcUser, Task>。除非您告诉编译器,否则编译器无法知道哪一个:
Func<IJcUser, Task> x = user => DisplayUserProfile(user);
UserTouchCommand = ReactiveCommand.CreateFromTask(x);
Run Code Online (Sandbox Code Playgroud)
或者您可以明确声明类型参数:
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(DisplayUserProfile);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |