我有一个自定义控件,该控件引发带有参数的事件。我可以将命令绑定到事件,但是在命令处理程序参数中始终为null。
这是命令绑定:
this.BindCommand(ViewModel,
vm => vm.MyCommand,
v => v.InstanceOfCustomControl,
toEvent: nameof(MyCustomControl.CustomEvent))
.DisposeWith(d);
这是命令的定义和实现:
MyCommand = ReactiveCommand
.CreateFromTask<CustomEventArgs, Unit>(MyCommandImpl);
public ReactiveCommand<CustomEventArgs, Unit> MyCommand{ get; set; }
private Task<Unit> MyCommandImpl(CustomEventArgs args)
{
if (args is null) throw new Exception("WTF?");
}
对于100%的事件,我知道事件离开自定义控件时,它的参数不为null(=包含一个值)。但是它以空值到达反应性命令。我在做什么错了?
答案 0 :(得分:0)
在这种情况下,应使用Observable.FromEventPattern<CustomEventArgs>
而不是BindCommand
方法:
Observable.FromEventPattern<CustomEventArgs>(
InstanceOfCustomControl,
nameof(MyCustomControl.CustomEvent))
.Subscribe(async nxt =>
{
await ViewModel.MyCommand.Execute(nxt.EventArgs);
})
.DisposeWith(d);