2016-07-20 10 views
1

Ich bin neu bei ReactiveUI und derzeit glücklich damit. Aber ich habe eine Frage: Wie Windows-Ereignis/Nachricht die ReactiveUI-Art zu behandeln?Wie Windows-Ereignis (Nachricht) der ReactiveUI Weg behandelt?

In mvvmlight, es ist so:

<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> 

Aber ich weiß nicht, wie es in ReactiveUI zu tun. Vielleicht ist es etwas ähnlich wie

MessageBus.Current.Listen<KeyUpEventArgs>() 
    .Where(e => e.KeyCode == KeyCode.Up) 
    .Subscribe(x => Console.WriteLine("Up Pressed!")); 

aber ich weiß nicht, wie es zu tun für speziell Closing Ereignis Mainframe.

Ich habe irgendwo gelesen, dass der Autor von ReactiveUI nicht stark gegen Code hinter Code ist (vielleicht erinnere ich mich falsch), was ist der vorgeschlagene Weg dann?

Antwort

2

Es gibt ein separates Nuget-Paket ReactiveUI Events, das Helfer (Erweiterungsmethoden) enthält, die Ereignisse wie IObservables anzeigen, die Sie in Ansichten verwenden können. Es wird beschrieben in the docs.

Grundsätzlich Code hinter in der Ansicht wird so ähnlich wie diese enthalten:

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

einen Blick at this question auch nehmen.

+0

Danke! Ich verwende stattdessen [reactiveui-events.Net40] (https://www.nuget.org/packages/reactiveui-events.Net40), weil ich .net 4.0 verwende. – Felix