Stai cercando un modo per associare un evento a un comando. L'approccio tipico qui è quello di utilizzare il comportamento EventToCommand da MVVMLight.
Esempio di utilizzo (dal articolo collegato):
<StackPanel Background="Transparent">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<command:EventToCommand
Command="{Binding Main.NavigateToArticleCommand,
Mode=OneWay,
Source={StaticResource Locator}}"
CommandParameter="{Binding Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<!--...-->
</StackPanel>
per lo scenario specifico, non si utilizza MVVMLight. Poiché tale framework è open source, è possibile copiare l'implementazione di EventToCommand nel proprio progetto o, più semplicemente, è possibile utilizzare lo InvokeCommandAction, che fa parte della libreria System.Windows.Interactivity.dll, inclusa in Expression Blend.
Esempio di InvokeCommandAction:
<TextBox x:Name="TicketNumber">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<i:InvokeCommandAction Command="{Binding OpenTicketCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
Infine, tutto questo dogma MVVM che "non si può avere alcun codice dietro" è stato abbattuto time | and | time di nuovo (l'ultimo collegamento è particolarmente rilevante). MVVM dovrebbe essere unit-testabile e separa la "logica di visualizzazione" dalla "logica aziendale". L'evento "Chiudi" è un po 'un'area grigia tra la logica di visualizzazione e di business. Ma se riesci a scrivere un gestore di eventi nel tuo codice, che invoca il metodo o il comando appropriato di ViewModel, e se puoi testare il codice unitamente, allora sei buono quanto l'oro. Non preoccuparti di rimuovere tutte le tracce di code-behind dal tuo progetto.
Non ho la vista del tipo Finestra. Le mie viste ha solo digitare Application e UserControl. Se uso la tua dichiarazione in UserControl ottengo errore: Il nome "Messaggio" non esiste nello spazio dei nomi "clr-namespace: Caliburn.Micro; assembly = Caliburn.Micro" – MagB
Ho scoperto, ho bisogno di usare Caliburn.Micro. Piattaforma – MagB
Bene, UserControl non ha evento di chiusura. Sembra che io debba avere una vista di tipo Window o che abbia bisogno di un ShellView. – MagB