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"
Aquí hay una publicación que habla de todo lo que necesita saber sobre EventToCommand del creador de MVVMLight;)
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>