37

谁能告诉我EventToCommand类的实际语法是什么。我认为EventToCommand该类适用于 Silverlight / WPF 和 WP7,因此我认为它是一个更好的选择。

据我所知,我可以添加任何点击事件并将其强制添加到我ViewModel的 .

我知道你可以在没有 Blend 的情况下添加它,但是有可用的片段吗?

或者有没有更简单的方法可以通过 VS 2010 添加它?任何帮助,或者如果有人知道这方面的好教程会很棒。

4

3 回答 3

83

假设您使用.NetFramework4

首先添加namespace

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

Loaded 事件的语法。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <cmd:EventToCommand Command="{Binding Mode=OneWay, Path=LoadedCommand}"
                            PassEventArgsToCommand="True" />
    </i:EventTrigger>
</i:Interaction.Triggers>
于 2011-05-03T13:05:46.980 回答
5

我更新了我的项目,看起来他们将命令移至:

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
于 2015-11-18T20:10:03.807 回答
4

0) 如果您不了解 WPF 和 MVVM,请阅读 Josh Smith 关于 WPF 和 MVVM 模式的文章https://msdn.microsoft.com/en-us/magazine/dd419663.aspx

1)在你的项目中添加包(通过NuGet)MvvmLightLibs

2) 添加对 System.Windows.Interactivity 的引用

3) 在“查看”XAML 中添加:

一种)

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());
  }
}

PS 在您的视图中应指定 DataContext (XAML)

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

这是工作。我自己也刚学会。

于 2017-11-17T08:21:23.823 回答