谁能告诉我EventToCommand
类的实际语法是什么。我认为EventToCommand
该类适用于 Silverlight / WPF 和 WP7,因此我认为它是一个更好的选择。
据我所知,我可以添加任何点击事件并将其强制添加到我ViewModel
的 .
我知道你可以在没有 Blend 的情况下添加它,但是有可用的片段吗?
或者有没有更简单的方法可以通过 VS 2010 添加它?任何帮助,或者如果有人知道这方面的好教程会很棒。
谁能告诉我EventToCommand
类的实际语法是什么。我认为EventToCommand
该类适用于 Silverlight / WPF 和 WP7,因此我认为它是一个更好的选择。
据我所知,我可以添加任何点击事件并将其强制添加到我ViewModel
的 .
我知道你可以在没有 Blend 的情况下添加它,但是有可用的片段吗?
或者有没有更简单的方法可以通过 VS 2010 添加它?任何帮助,或者如果有人知道这方面的好教程会很棒。
假设您使用.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>
我更新了我的项目,看起来他们将命令移至:
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
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>
这是工作。我自己也刚学会。