Command属性只能绑定特定事件,例如按钮控件,绑定的是点击事件。但是事件五花八门,MouseDown,MouseUp等。只有Command,满足不了需求。所以使用了i:Interaction.Triggers。
第一步,在NuGet包下载安装好MvvmLight(它里面包含了Blend的interactivity.dll)
第二步,在Window.xmal文件中添加引用
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
第三步,绑定事件
<Button Height="30" Width="80" Content="伺服点动">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown">
<i:InvokeCommandAction Command="{Binding JogMouseDownCommand}" CommandParameter="Positive"/>
</i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseUp">
<i:InvokeCommandAction Command="{Binding JogMouseUpCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
ViewModel代码范例:
using GalaSoft.MvvmLight.Command;
using System.Windows.Input;
namespace WpfApp1
{
internal class ViewModel
{
public ICommand JogMouseDownCommand { get; set; }
public ICommand JogMouseUpCommand { get; set; }
public ViewModel()
{
JogMouseDownCommand = new RelayCommand<string>(Jog_MouseDown);
JogMouseUpCommand = new RelayCommand(Jog_MouseUp);
}
private void Jog_MouseDown(string direction)
{
//传参的写法
}
private void Jog_MouseUp()
{
//不传参的写法
}
}
}