MVVM Light:在XAML中添加EventToCommand而不使用混合、更简单的方法或代码片段?

MVVM Light:在XAML中添加EventToCommand而不使用混合、更简单的方法或代码片段?,mvvm,mvvm-light,eventtocommand,Mvvm,Mvvm Light,Eventtocommand,谁能告诉我EventToCommand类的实际语法是什么。我认为,EventToCommand类与Silverlight/WPF和WP7一起工作,因此我认为它是一个更好的选择 据我所知,我可以添加任何单击事件,并将其强制添加到我的视图模型中,但我在寻找最佳方法时遇到了一个问题 我知道您可以添加它而不必混合,但是有可用的片段吗 还是有更简单的方法通过VS2010添加它?如果有人知道这方面的好教程,或者有人知道这方面的帮助,那就太好了。假设您使用的是。NetFramework4: 首先添加命名空间:

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

据我所知,我可以添加任何单击事件,并将其强制添加到我的
视图模型中,但我在寻找最佳方法时遇到了一个问题

我知道您可以添加它而不必混合,但是有可用的片段吗


还是有更简单的方法通过VS2010添加它?如果有人知道这方面的好教程,或者有人知道这方面的帮助,那就太好了。

假设您使用的是
。NetFramework4

首先添加
命名空间

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>

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

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
0)如果您不知道WPF和MVVM,请阅读Josh Smith关于WPF和MVVM模式的文章

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

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

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

(a)

(b)

视图中的p.S.应指定为DataContext(XAML)



这是工作。我自己刚刚了解。

视图模型如何使用此事件?它将事件转换为命令,在示例中,将调用视图模型上名为LoadedCommand的命令。非常好,谢谢。我将命令名与视图模型中的命令名进行了匹配,它按预期工作。是否需要
Mode=OneWay
位?没有它似乎可以正常工作。@Dai
one-way
将在源代码更改时更新目标,
two-way
将在源代码更改时更新目标,并且在目标更改时更新源代码。这与-ah我知道了,这是一个后期编辑。这真的应该是对另一个答案的评论,我正在尝试在listview中实现ItemTapped……但是我不知道把你的代码放在哪里,你能帮我吗?这里有一篇文章是关于MVVMLight的创建者的;)我已经创建了不需要MVVMLight的。它确实需要System.Windows.Interactive,但接受的答案也是如此。
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
<i:Interaction.Triggers>
    <i:EventTrigger EventName="Closing">
      <command:EventToCommand Command="{Binding OnClosingCommand}"/>
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Window>
public ICommand OnClosingCommand
{
  get
  {
    return new RelayCommand(() => SomeMethod());
  }
}
  <Window.DataContext>
    <vm:MainWindowViewModel/>
  </Window.DataContext>