Подтвердить что ты не робот

MVVM Light: добавление EventToCommand в XAML без смешивания, более простой способ или фрагмент?

Может ли кто-нибудь сказать мне, каков фактический синтаксис для класса EventToCommand. Из того, что я считаю, класс EventToCommand работает с Silverlight/WPF и WP7, поэтому я думаю, что его лучший выбор - пойти вниз.

Из того, что я верю, я могу добавить любое событие click и заставить его принудительно вставить в мой ViewModel, но у меня возникла проблема с поиском наилучшего способа сделать это.

Я знаю, что вы можете добавить его без Blend, но есть ли доступные фрагменты?

Или есть ли более простой способ добавить его через VS 2010? Любая помощь или если кто-нибудь знает хороший учебник по этому поводу, это будет здорово.

4b9b3361

Ответ 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>

Ответ 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>

Это работа. Я сам только что узнал.