1、安装NuGet
2、在XAML的命名空间引入:
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
3、使用:
<Canvas Background="Aqua"><Rectangle Stroke="Red" Width="{Binding RectModel.RectangleWidth}" Height="{Binding RectModel.RectangleHeight}" Canvas.Left="{Binding RectModel.RectangleLeft}" Canvas.Top="{Binding RectModel.RectangleTop}"/><i:Interaction.Triggers><!--EventName是Command指定的Action--><i:EventTrigger EventName="MouseDown"><i:InvokeCommandAction Command="{Binding MouseDownCommand}"/></i:EventTrigger></i:Interaction.Triggers>
</Canvas>
--我这里的ViewModel部分是这样子的
public SimpleCommand MouseDownCommand { get; private set; }
// 构造方法中初始化
MouseDownCommand = new SimpleCommand { DoExecute = new Action<object>(MouseDown) };/// <summary>
/// 鼠标按下的命令执行逻辑
/// </summary>
/// <param name="obj"></param>
/// <exception cref="NotImplementedException"></exception>
private void MouseDown(object obj)
{Debug.WriteLine("触发Canvas的MouseDown命令");
}/// SimpleCommand类是这样的:
public class SimpleCommand : ICommand
{public event EventHandler CanExecuteChanged;public Action<object> DoExecute { get; set; }public bool CanExecute(object parameter){return true;}public void Execute(object parameter){if (DoExecute != null){DoExecute(parameter);}}
}
4、这样就可以在ViewModel中直接给这个Command内容了,不用像之前那么麻烦地绑定Command了,这样更加清晰,Command也可以有花样地组合