当前位置: 代码迷 >> 综合 >> WPF 如何实现事件绑定 (MVVM)
  详细解决方案

WPF 如何实现事件绑定 (MVVM)

热度:89   发布时间:2023-10-25 14:53:22.0

什么是事件绑定?

首先说到绑定,一般是在WPF 中常见的,因为WPF中有一个比较好用的框架叫做

MVVM

所以View层的按钮等元件的的动作都是需要和后台ViewModel 中的函数进行绑定的。

如 我们最常见的按钮的command 绑定

 Command="{Binding Btncommand}" CommandParameter="write"

这里面的command 是命令,不是事件

如果点击图片,或者按钮抬起来的时候需要触发一些命令的时候就需要使用事件绑定。

为什么要用到事件绑定?

但是可以想一下,如果想说按钮弹起时有另外一个动作要执行,这个时候需要怎么办?

答: 使用事件绑定

当然在winform 中由于事件就是写在后台的,所以直接写不需要使用绑定,但是WPF 如果使用MVVM 就不可以这样了,否则就会有耦合了;

事件绑定的步骤

事件绑定的实现比较简单,但是目前在网上搜索的资料都是比较旧的实现方式,而且有时后版本不兼容,下面介绍目前新版本的实现方式:

step1:在nuget 管理中增加 Microsoft.Xaml.Interactions 工具

step2:

然后再xmal 中引用该命名空间

      xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

step3:

事件绑定的写法如下:

                <Button Content="xxx"  Width="120" Height="40" ><i:Interaction.Triggers><i:EventTrigger EventName="MouseDoubleClick"><i:InvokeCommandAction Command="{Binding Btncommand}"  CommandParameter="read" /></i:EventTrigger><i:EventTrigger EventName="Click"><i:InvokeCommandAction Command="{Binding Btncommand}"  CommandParameter="read" /></i:EventTrigger></i:Interaction.Triggers></Button>

这样便实现了事件的绑定

当然也会遇见很多事件失效的问题如:

就是 关于MouseLeftButtonDown事件失效的问题

不过可以参考这个文章:

WPF高级教程(八)专题:事件_白话屋-CSDN博客