MVVM架构浅谈 – 事件绑定

之前讲过使用ICommand在ViewModel中实现命令的实现,但是界面中需要将事件和Command绑定成功才算正在完成一次事件绑定。MVVM模式开发中,界面的一些控件的点击事件是可以直接绑定Command属性,然后在ViewModel中实现该命令。但是大部分控件可不止一个点击事件,比如DoubleClick、SelectionChanged等事件。下面我们就讲讲如何在Xmal设计界面中绑定非点击事件。

通常事件绑定到Command有三种情况。

1、使用MouseBinding

在MouseBinding绑定命令的只针对鼠标的一些点击事件,如下:

  • None:执行任何操作
  • LeftClick:单击鼠标左键
  • RightClick:单击鼠标右键
  • MiddleClick:单击鼠标中建
  • WheelClick:旋转鼠标滚轮
  • LeftDoubleClick:双击鼠标左键
  • RightDoubleClick:双击鼠标右键
  • MiddleDoubleClick:双击鼠标中键

示例代码如下:

<Button Content="Button">
    <Button.InputBindings>
        <MouseBinding MouseAction="LeftClick" Command ={"Binding ClickCommand"}/>
        <MouseBinding MouseAction="RightClick" Command={"Binding RightClickCommand"}/>
    </Button.InputBindings>
</Button>

2、使用触发器

使用触发器的时候需要引用System.Windows.Interactivity.dll(必须安装了Blend才有该组件)。示例代码如下:

使用前引用命名空间

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
<Button Content="Button">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
             <i:InvokeCommandAction Command="{Binding DoubleClickCommand}"
                   CommandParameter="{Binding Parameter}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

上面代码中EventName可以设置为控件的各种事件,Command是命令名称,CommandParameter是执行命令传入参数,该参数一般是在ViewModel中。

3、使用CommandBehavior绑定

参考 AttachedComandBehavior ,Command之必杀技-AttachedBehavior

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s