如何处理Windows事件(消息)的ReactiveUI方式?

时间:2016-07-20 07:29:30

标签: wpf windows events reactiveui

我是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的作者并没有强烈反对代码背后的代码(也许我记得错了),那么建议的方式是什么?

1 个答案:

答案 0 :(得分:4)

有一个单独的Nuget包ReactiveUI Events,它包含将事件公开为IObservables的助手(扩展方法),您可以在视图中使用它们。它被描述为in the docs

基本上,您在视图中隐藏的代码将包含类似于此的内容:

this.Events().Closing
    .Subscribe(_ => Console.WriteLine("Bye!"));

看看at this question