我正在使用Reactive UI事件扩展到Reactive UI。
只是在玩事件以连接到ViewModel。
最初我在我的View的构造函数中有
this.Events().KeyDown.Select(x => x.Key).InvokeCommand(ViewModel.NewTextCommand);
但是,这在构造函数中存在视图模型尚不存在的问题。我考虑添加一个WhenAnyValue并设置Invoke但不确定这是否会导致内存泄漏。
目前我有
this.Events().KeyDown.Select(x => x.Key).Subscribe(
x =>
{
if (ViewModel != null)
{
if (ViewModel.NewTextCommand.CanExecute(x))
{
ViewModel.NewTextCommand.Execute(x);
}
}
});
但这看起来有点笨拙。
答案 0 :(得分:3)
您绝对可以使用WhenAnyValue
,但ReactiveUI中还有一个内置的InvokeCommand
overload来执行此操作:
this.Events().KeyDown.Select(x => x.Key).InvokeCommand(this, v => v.ViewModel.NewTextCommand);