需求:ListBox中的Item是按钮图片,要求单击和双击时触发不同的事件。

XAML中需要引入System.Windows.Interactivity.dll

  1. xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

该ListBox的关键代码如下。

  1. <ListBox ItemsSource="{Binding YourList}">
  2. <ListBox.Template>
  3. <!-- 流式布局 左对齐 -->
  4. <ControlTemplate TargetType="ListBox">
  5. <WrapPanel Width="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourWidth}" Orientation="Horizontal" IsItemsHost="True"/>
  6. </ControlTemplate>
  7. </ListBox.Template>
  8. <ListBox.ItemTemplate>
  9. <DataTemplate>
  10. <Grid>
  11. <!-- 单击事件,传参Button自身 -->
  12. <Button Width="160" Height="120" Background="Transparent" BorderBrush="#E12080" BorderThickness="1"
  13. Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourClickCommand}"
  14. CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" BorderBrush="#E12080" BorderThickness="1">
  15. <!-- 双击事件,传参父节点的Button -->
  16. <i:Interaction.Triggers>
  17. <i:EventTrigger EventName="MouseDoubleClick">
  18. <i:InvokeCommandAction
  19. Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.YourDoubleClickCommand}"
  20. CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type Button}}}"/>
  21. </i:EventTrigger>
  22. </i:Interaction.Triggers>
  23. <Grid>
  24. <!-- ListBoxItem的内容 -->
  25.  
  26. </Grid>
  27. </Button>
  28. </Grid>
  29. </DataTemplate>
  30. </ListBox.ItemTemplate>
  31. </ListBox>

【WPF】图片按钮的单击与双击事件的更多相关文章

  1. GridView/DataGrid行单击和双击事件实现代码_.Net教程

    功能: 单击选中行,双击打开详细页面 说明:单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间 ;当双击时,通过全局变量 dbl_click 来取消单击事件的响应  ...

  2. 支持行单击、双击事件的GridView和DataList控件(译)

    支持行单击.双击事件的GridView和DataList控件(译)         让GridView 和 DataList 控件响应鼠标单击.双击事件.并且,使用 ClientScript.Regi ...

  3. 禁用CMFCRibbonApplicationButton的单击和双击事件

    为了禁用CMFCRibbonApplicationButton的单击和双击事件,我重载了CMFCRibbonApplicationButton如下: 1. MyRibbonApplicationBut ...

  4. jquery处理单击和双击事件

    今天做div点击时,需要用到同一div的单击和双击事件,出现问题如下 例子: Html <body> <div id="div_1">单击双击我</d ...

  5. Android 自定义View实现单击和双击事件

    自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面 ...

  6. [Javasript] 同时实现单击和双击事件

    在同一个元素上同时绑定单击和双击事件: JavaScript <script type="text/javascript"> var timer = 0; var de ...

  7. JS - 解决鼠标单击、双击事件冲突问题(原生js实现)

    由于鼠标双击时每一次触发双击事件都会引起两次单击事件和一次单击事件,原生的js不提供专门的双击事件. 因为业务原因,双击和单机都绑定了不同的业务,在双击的时候又触发了单机,影响了页面的正常显示 出现问 ...

  8. [转] Ext Grid (ExtJs)上的单击以及双击事件

    例1: 1.双击 var cb = new Ext.grid.RowSelectionModel({ singleSelect:true //如果值是false,表明可以选择多行:否则只能选择一行 } ...

  9. unity3D 游戏物体同时绑定单击、双击事件

    前言 在unity中我们常用的获取鼠标点击的方法有 在3D场景中,一般用在Update方法中,每一帧调用 void Update(){ )){ Debug.log("鼠标左键点击" ...

随机推荐

  1. Spring框架学习04——复杂类型的属性注入

    代码示例如下: 创建BeanClass实体类 public class BeanClass { private String[] arrs;//数组类型 private List<String& ...

  2. python常用模块之时间模块

    python常用模块之时间模块 python全栈开发时间模块 上次的博客link:http://futuretechx.com/python-collections/ 接着上次的继续学习: 时间模块 ...

  3. MyBatis学习笔记3--使用XML配置SQL映射器

    <resultMap type="Student" id="StudentResult"> <id property="id&quo ...

  4. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年9月26日 必修/选修: 必修 实验内容 (1)链 ...

  5. VC6配置CXimage库

    VC6下配置CxImage库教程 第一步 下载CxImage http://sourceforge.net/projects/cximage/下载相应的CxImage文件 本例使用的最新版本(7.02 ...

  6. Linux使用命令 笔记

    1.解压缩 tar -zxvf hadoop.xx.tar.gz2.重命名 mv hadoop-1.1.2 hadoop 3.创建文件夹 mkdir 文件夹名 4.vi编辑器 在一般模式下输入“ZZ” ...

  7. 【译】如何在 Android 5.0 上获取 SD卡 的读写权限

    因为最近项目需要,涉及到 SD卡 的读写操作,然而申请 <!-- 读写权限 --> <uses-permission android:name="android.permi ...

  8. javascript 原生常用api 数组方法大全

     <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. GO开发环境搭建

    GO开发环境搭建 1)下载GO SDK,并安装 https://golang.google.cn/dl/ 2)下载GO IDE:GOLAND,并安装 3)设置GOROOT和GOPATH 4)新建一个工 ...

  10. 在远程桌面服务中配置RD网关直接访问内网

    原文地址:http://wangchunhai.blog.51cto.com/225186/1139388/ 远程桌面网关(RD 网关)是一项角色服务,使授权远程用户可以从任何连接到 Internet ...