【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法
实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应:
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DeleteCommand}" CommandParameter="SysID"></Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我也是WPF新手,网上找到一些解决方法:http://stackoverflow.com/questions/4396203/how-to-fire-event-from-button-inside-datagrid-in-silverlight-and-mvvm
这种方法需要BUTTON重新绑定一个DataContext,可能造成某些数据丢失。不满足我的功能要求。
最后在一篇文章的评论中找到解决方法如下:
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" CommandParameter="{Binding SysID}" Content="删除"></Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
主要是通过RelativeSource 进行 DataContext 查找,进而进行绑定。
【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法的更多相关文章
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感 ...
- WPF: 实现带全选复选框的列表控件
本文将说明如何创建一个带全选复选框的列表控件.其效果如下图: 这个控件是由一个复选框(CheckBox)与一个 ListView 组合而成.它的操作逻辑: 当选中“全选”时,列表中所有的项目都 ...
- WPF备忘录(5)怎样修改模板中的控件
首先,想问大家一个问题,你们如果要给一个Button添加背景图片会怎么做?(呵呵,这个问题又点小白哈) 是这样吗? <Button Height="57" Horizonta ...
- WPF中DataGrid控件内Button的Command和CommandParameter的绑定
场景:视频上传功能,上传列表使用DataGrid控件,视频有不同的状态对应不同的操作,DataGrid中最后一列为操作列,里面是Button控件.希望点击Button后执行对应的操作,但是设置Butt ...
- WPF实现带全选复选框的列表控件
本文将说明如何创建一个带全选复选框的列表控件.其效果如下图: 这个控件是由一个复选框(CheckBox)与一个 ListView 组合而成.它的操作逻辑: 当选中“全选”时,列表中所有的项目都会被选中 ...
- WPF日积月累之DataGrid样式以及操作数据模板中的控件
一.效果图 二.代码预览 1 <Window x:Class="Test.MainWindow" 2 xmlns="http://schemas.microsoft ...
- WPF中TreeView控件数据绑定和后台动态添加数据(一)
数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...
- 用MVVM模式开发中遇到的零散问题总结(4)——自制摄像头拍摄大头贴控件
原文:用MVVM模式开发中遇到的零散问题总结(4)--自制摄像头拍摄大头贴控件 一直有个疑问,为什么silverlight对摄像头支持这么好,WPF却一个库都没有....于是我各种苦恼啊,各种Code ...
- 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机
原文:用MVVM模式开发中遇到的零散问题总结(5)--将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打 ...
随机推荐
- Idea查看并过滤某个接口或者类的实现
查看当前类的父类 会出现一个图 不过这个有点鸡肋,我们通常想看一个类的实现有哪些,虽然有个方法可以,但是没有图. 查看类的实现 在你想查看的类上 Ctrl+H(Ctrl+Alt+B是直接弹窗,不能过滤 ...
- sql笔试题
笔试题1: 1.select * from tablex where name = "张*" order by age 默认升序 select * from table ...
- js重点--原型链
通过将一个构造函数的原型对象指向父类的实例,就可以调用父类中的实例属性及父类的原型对象属性,实现继承. function animals(){ this.type = "animals&qu ...
- Oracle DB Day01(SQL)
--时间为什么不是现在呢? --设置时区和显示时间 ALTER DATABASE SET TIME_ZONE='+08:00' select to_char(current_timestamp at ...
- JS“盒子模型”
列举几个常用的属性 client系列 clientWidth - 盒子真实内容的宽度[content+padding左右],不包括边线和滚动条 clientHeight - 盒子真实内容的高度[con ...
- 【汇编语言】Win10 安装 DOXBox0.74
1.下载package包,有用的只有前两个. 2.解压 masm 压缩文件,我把它解压到D盘. 3.双击 图1 中的 DOXBox 0.74.exe 进行安装. 4.打开 DOXBox0.74 (参考 ...
- Asp.net 项目部署的两个问题
1:关于MVC中BundleCollection压缩js css文件 发布后获取失败的问题 原因是: 默认本地vs里面调试的时候,因为web.config文件里面有一个debug属性,当有此属性时,默 ...
- 关于lamp环境搭建过程的教程
一.搭建lamp 的网址 https://lamp.sh/install.html 二.对于linux下上传图片或音频失败原因? 1.必须将文件夹的权限设置为apache 命令为:chown -R a ...
- 软件测试-Svn服务器搭建全过程-基于Centos6.7-64bit
本文详细介绍了在CentOs6.7-64bit服务器上搭建SVN版本控制服务 工具准备 CentOs6.7-64bit操作系统:关闭linux防火墙:设置定固IP--DHCP(动态):安装系统过程中开 ...
- php 进行跨域操作
本地配置两个域名: http://www.concent.com 主域名 http://s.concent.com/ 子域名 在主域名下添加跨域代码: ini_set('session ...