example commandmanager mvvm mvvm-light eventtocommand

commandmanager - MVVM Light: ¿Agregar EventToCommand en XAML sin mezcla, forma más fácil o fragmento?



commandmanager wpf example (4)

0) si no conoce WPF y MVVM, lea el artículo de Josh Smith sobre WPF y el patrón MVVM https://msdn.microsoft.com/en-us/magazine/dd419663.aspx

1) En su proyecto agregue el paquete (a través de NuGet) MvvmLightLibs

2) agregar referencia a System.Windows.Interactivity

3) En "Ver" XAML agrega:

un)

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:command="http://www.galasoft.ch/mvvmlight"

segundo)

<i:Interaction.Triggers> <i:EventTrigger EventName="Closing"> <command:EventToCommand Command="{Binding OnClosingCommand}"/> </i:EventTrigger> </i:Interaction.Triggers> </Window>

4) En ViewModel agregue la propiedad necesaria

public ICommand OnClosingCommand { get { return new RelayCommand(() => SomeMethod()); } }

PS En su vista debe especificarse DataContext (XAML)

<Window.DataContext> <vm:MainWindowViewModel/> </Window.DataContext>

Eso es trabajo. Yo mismo acabo de enterarme.

¿Alguien puede decirme cuál es la sintaxis real para la clase EventToCommand ? Por lo que creo es que la clase EventToCommand funciona con Silverlight / WPF y WP7, por lo tanto, creo que es una mejor opción para bajar.

Por lo que creo, puedo agregar cualquier evento de clic y ViewModel en mi ViewModel , pero tengo problemas para encontrar la mejor manera de hacerlo.

Sé que puedes agregarlo sin Blend, pero ¿hay fragmentos disponibles?

¿O hay una manera más fácil de agregarlo a través de VS 2010? Cualquier ayuda o si alguien sabe de un buen tutorial sobre esto sería genial.


Actualicé mi proyecto y parece que movieron el comando a:

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"



Supongamos que usa .NetFramework4 :

Primero agregue el namespace :

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

Sintaxis para el evento cargado.

<i:Interaction.Triggers> <i:EventTrigger EventName="Loaded"> <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=LoadedCommand}" PassEventArgsToCommand="True" /> </i:EventTrigger> </i:Interaction.Triggers>