MVVM Light: добавление EventToCommand в XAML без смешивания, более простой способ или фрагмент?
Может ли кто-нибудь сказать мне, каков фактический синтаксис для класса EventToCommand
. Из того, что я считаю, класс EventToCommand
работает с Silverlight/WPF и WP7, поэтому я думаю, что его лучший выбор - пойти вниз.
Из того, что я верю, я могу добавить любое событие click и заставить его принудительно вставить в мой ViewModel
, но у меня возникла проблема с поиском наилучшего способа сделать это.
Я знаю, что вы можете добавить его без Blend, но есть ли доступные фрагменты?
Или есть ли более простой способ добавить его через VS 2010? Любая помощь или если кто-нибудь знает хороший учебник по этому поводу, это будет здорово.
Ответы
Ответ 1
Предположим, вы используете .NetFramework4
:
Сначала добавьте namespace
:
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
Синтаксис для загруженного события.
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding Mode=OneWay, Path=LoadedCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
Ответ 2
Здесь сообщение, в котором говорится о всем, что вам нужно знать о EventToCommand от создателя MVVMLight;)
Ответ 3
Я обновил свой проект, и похоже, что они перевели команду:
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
Ответ 4
0), если вы не знаете WPF и MVVM, затем прочитайте статью Джоша Смита о шаблоне WPF и MVVM https://msdn.microsoft.com/en-us/magazine/dd419663.aspx p >
1) В проекте добавьте пакет (через NuGet) MvvmLightLibs
2) добавьте ссылку на System.Windows.Interactivity
3) В "View" XAML добавьте:
a)
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) В ViewModel добавьте необходимое свойство
public ICommand OnClosingCommand
{
get
{
return new RelayCommand(() => SomeMethod());
}
}
P.S. В вашем представлении должен быть указан DataContext (XAML)
<Window.DataContext>
<vm:MainWindowViewModel/>
</Window.DataContext>
Это работа. Я сам только что узнал.