Quelqu'un peut-il me dire quelle est la syntaxe réelle pour la classe EventToCommand
. D'après ce que je crois, c'est que la classe EventToCommand
fonctionne avec Silverlight/WPF et WP7, donc je pense que c'est un meilleur choix pour descendre.
D'après ce que je crois, je peux ajouter n'importe quel événement de clic et le forcer dans mon ViewModel
, mais j'ai un problème pour trouver la meilleure façon de le faire.
Je sais que vous pouvez l'ajouter sans Blend, mais y a-t-il des extraits disponibles?
Ou existe-t-il un moyen plus simple de l'ajouter via VS 2010? Toute aide ou si quelqu'un connaît un bon tutoriel à ce sujet serait formidable.
Supposons que vous utilisez .NetFramework4
:
Ajoutez d'abord namespace
:
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;Assembly=GalaSoft.MvvmLight.Platform"
Syntaxe de l'événement Loaded.
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding Mode=OneWay, Path=LoadedCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
J'ai mis à jour mon projet et il semble qu'ils aient déplacé la commande vers:
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;Assembly=GalaSoft.MvvmLight.Platform"
0) si vous ne connaissez pas WPF et MVVM, lisez l'article de Josh Smith sur WPF et MVVM https://msdn.Microsoft.com/en-us/magazine/dd419663.aspx
1) Dans votre projet, ajoutez un package (via NuGet) MvvmLightLibs
2) ajouter une référence à System.Windows.Interactivity
3) Dans "View" XAML, ajoutez:
une)
xmlns:i="clr-namespace:System.Windows.Interactivity;Assembly=System.Windows.Interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
b)
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<command:EventToCommand Command="{Binding OnClosingCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Window>
4) Dans ViewModel, ajoutez la propriété nécessaire
public ICommand OnClosingCommand
{
get
{
return new RelayCommand(() => SomeMethod());
}
}
P.S. Dans votre vue doit être spécifié DataContext (XAML)
<Window.DataContext>
<vm:MainWindowViewModel/>
</Window.DataContext>
C'est du travail. Je viens moi-même d'apprendre.