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
位?没有它似乎可以正常工作。@Daione-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>