WPF中如何将ListViewItem双击事件绑定到Command
今天的博客将介绍如何实现ListViewItem双击事件绑定到ViewModel中的Command。实现方法借助了Style中的EventSetter,请看下面的详细代码:
<ListView ItemsSource="{Binding Users}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions> <TextBlock Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Center" /> <TextBlock Grid.Column="1" Text="{Binding Birthday}" VerticalAlignment="Center" HorizontalAlignment="Center" /> <TextBlock Grid.Column="2" Text="{Binding Address}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Setters>
<EventSetter Event="MouseDoubleClick" Handler="OnListViewItemDoubleClick" />
</Style.Setters>
</Style>
</ListView.ItemContainerStyle>
</ListView>
在Code Behind中,
private void OnListViewItemDoubleClick(object sender, MouseButtonEventArgs e)
{
var vm = this.DataContext as MainViewModel; vm.EditCommand.Execute();
}
具体的ViewModel中执行需要的操作即可。这样不会打破MVVM模式。
class MainViewModel
{
private ObservableCollection<User> _users;
public ObservableCollection<User> Users
{
get
{
if(_users == null)
{
_users = new ObservableCollection<User>();
} return _users;
}
} public DelegateCommand EditCommand { get; private set; } public MainViewModel()
{
Users.Add(new User() { Name = "Tom", Address = "WUXI IPARK", Birthday = new DateTime(,,) }); Users.Add(new User() { Name = "Jack", Address = "WUXI IPARK", Birthday = new DateTime(, , ) }); Users.Add(new User() { Name = "Jerry", Address = "WUXI IPARK", Birthday = new DateTime(, , ) }); Users.Add(new User() { Name = "Hellen", Address = "WUXI IPARK", Birthday = new DateTime(, , ) }); EditCommand = new DelegateCommand(Edit);
} private void Edit()
{
System.Diagnostics.Debug.WriteLine("MouseDoubleClick Command.");
}
}
通过上面的方式就很简单的将ListView中的MouseDoubleClick事件绑定到Command上。
感谢您的阅读,代码点击这里下载。
WPF中如何将ListViewItem双击事件绑定到Command的更多相关文章
- WPF: 在 MVVM 设计中实现对 ListViewItem 双击事件的响应
ListView 控件最常用的事件是 SelectionChanged:如果采用 MVVM 模式来设计 WPF 应用,通常,我们可以使用行为(如 InvokeCommandAction)并结合命令来实 ...
- IOS系统中使用zepto的live事件绑定不了的一个办法
IOS系统中使用zepto的live事件绑定不了的一个办法: 对事件对象添加样式:cursor:pointer
- C# Note16: wpf window 中添加enter和双击事件
一.添加回车(enter)事件 在C#编程时,有时希望通过按回车键,控件焦点就会自动从一个控件跳转到下一个控件进行操作. 以用户登录为例,当输入完用户名和密码后, 需要点击登录按钮,而登录按钮必须获 ...
- 转:WPF中ListBox的创建和多种绑定用法
先从最容易的开始演示ListBox控件的创建. Adding ListBox Items下面的代码是向ListBox控件中添加多项ListBoxItem集合.XAML代码如下:<ListBox ...
- javascript中通过匿名函数进行事件绑定
- HTML中动态生成内容的事件绑定问题【转载】
转自 http://www.hitoy.org/event-binding-problem-of-dynamically-generated-content.html 由于实际的需要,有时需要往网页中 ...
- 【转】【WPF】WPF中的Button的MouseDown事件不触发问题
按照WPF的帮助说明,某些控件的路由事件被内部处理了,已经被标记为Handled,自行定义的事件处理代码便不再起作用了,有时候会很郁闷! 不过WPF提供了必要的方法. 1)使用相应的Preview事件 ...
- DICOM:再次剖析fo-dicom中DicomService的自己定义事件绑定
题记: 趁着<从0到1>大火的热潮,最近又一次翻阅了一遍<从一到无穷大>(这样是不是感觉整个非负数轴就圆满了^_^). 尽管作为科普类书籍.可是里面的内容还是比較深奥,幸亏有作 ...
- 在WPF中一种较好的绑定Enums数据方法
引言 在你使用wpf应用程序开发的时候,是否需要进行数据绑定到Enum数据呢?在这篇文章中,我将向你展示在WPF中处理Enum数据绑定的方法. 假设存在一个这样的Enum数据的定义,具体内容如下文代码 ...
随机推荐
- eclipse导入第三方jar包进入web项目的方法
此方式是没有用maven进行构建的项目,纯动态项目. 具体方法: 1.通过Java Build Path导入. 比如我项目上要用servlet-api.jar这个包,我所用的web容器是tomcat, ...
- python对缓存(memcached,redis)的操作
1.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...
- 详解https是如何确保安全的?
Https 介绍 什么是Https HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是 ...
- __index
Window = {} Window.prototype = {x = , y = , width = , height = } Window.mt = {} function Window.new( ...
- Redis中持久化的两种方法详解
Redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里;另一种方法教只追加文件(append-only f ...
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...
- reset.css css重置公共样式
@charset "utf-8";/*Css Document*/ /*! * @名称:reset.css * @功能:1.重设浏览器默认样式 * 2.设置通用原子类 *//* 防 ...
- 数据存储_SQLite (2)
SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 在ios项目中使用代码批量添加多行数据示例 代码示例: 1 // 2 // main.m 3 // 01-为数据库添加多行数据 4 ...
- 关于session和cookie
一.cookie机制和session机制的区别 **************************************************************************** ...
- JSP入门
JSP简介 所谓JSP就是在网页文件中嵌入Java代码或JSP定义的一些标记.JSP是建立在Servlet上的,在执行时JSP容器会先将JSP文件转换成Servlet文件以及class 文件,然后再执 ...