我是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!"));
但我不知道该如何针对大型机的
Closing
事件进行操作。我在某处读到ReactiveUI的作者并不强烈反对代码背后的代码(也许我记得错了),那么建议的方式是什么?
最佳答案
有一个单独的Nuget包ReactiveUI Events,其中包含帮助程序(扩展方法),这些事件将事件公开为IObservables
,您可以在内部 View 中使用。描述为in the docs。
基本上, View 中的代码将包含类似于以下内容的代码:
this.Events().Closing
.Subscribe(_ => Console.WriteLine("Bye!"));
也看看at this question。
关于wpf - 如何处理Windows事件(消息)的ReactiveUI方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38474953/