我是ReactiveUI的新手,目前对此很满意。 但我有一个问题:如何处理ReactiveUI方式的Windows事件/消息?
在mvvmlight中,它是这样的:
<Window ...
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<command:EventToCommand Command="{Binding ClosingCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
但我不知道如何在ReactiveUI中做到这一点。 也许它与
类似MessageBus.Current.Listen<KeyUpEventArgs>()
.Where(e => e.KeyCode == KeyCode.Up)
.Subscribe(x => Console.WriteLine("Up Pressed!"));
但我不知道如何专门为大型机{{1}}事件做这件事。
我在某处读过ReactiveUI的作者并没有强烈反对代码背后的代码(也许我记得错了),那么建议的方式是什么?
答案 0 :(得分:4)
有一个单独的Nuget包ReactiveUI Events,它包含将事件公开为IObservables
的助手(扩展方法),您可以在视图中使用它们。它被描述为in the docs。
基本上,您在视图中隐藏的代码将包含类似于此的内容:
this.Events().Closing
.Subscribe(_ => Console.WriteLine("Bye!"));