WPF ListBoxItem DataTempldate command 执行问题
今天用到MVVM,在listboxItem中做command处理。因为是要获取数据,修改ListBox模板,但是发现command无法正确执行,写在Item中可以正确执行。
网上也遇到类似问题,但是没有对应的解决办法。最后由@WaitingEver 给予解决。
主要用到RelativeSource,RelativeSource属性可以根据相对于目标的关系指向源对象。通常用于目标对象和源对象不在同一个标记块中,当创建控件模板和数据模板会出现这种情况。用到RelativeSource访问顶级ListBox控件去读取相应的属性。
出错代码:
<ListBox.ItemTemplate>
<DataTemplate>
<Image Margin="" Source="{Binding}" Width="" Height="" Stretch="Fill">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<i:InvokeCommandAction Command="{Binding ChangeBackGround}" CommandParameter="" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</DataTemplate>
</ListBox.ItemTemplate>
修正后代码:
<ListBox.ItemTemplate>
<DataTemplate>
<Image Margin="" Source="{Binding}" Width="" Height="" Stretch="Fill">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<i:InvokeCommandAction Command="{Binding Path=DataContext.ChangeBackGround,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</DataTemplate>
</ListBox.ItemTemplate>
WPF ListBoxItem DataTempldate command 执行问题的更多相关文章
- WPF DataTomplate中Command无效
问题:在DataTomplate中添加一个Button,Button添加Command,但是Command生效. 原因:ItemTemplate的DataContext指代不明,需要改为父类的Data ...
- WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍
WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式 ...
- WPF ListBoxItem模板中添加CheckBox选中问题
原文:WPF ListBoxItem模板中添加CheckBox选中问题 是这样的,需要一个ListBox来展示照片,并添加一个选中的CheckBox.这就需要对ListBox的ItemTemplate ...
- WPF ListboxItem 双击事件 Command绑定
<ListBox x:Name="Lb" HorizontalAlignment="Left" Height="600" Vertic ...
- WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
做过WPF开发的人,都知道做MVVM架构,最麻烦的是Event的绑定,因为Event是不能被绑定的,同时现有的条件下,命令是无法替代Event.而在开发过程中无法避免Event事件,这样MVVM的架构 ...
- WPF自学入门(十一)WPF MVVM模式Command命令
在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正如上一篇文章中在开始说的,MVVM的目的是为了最大限度地降低了 ...
- WPF命令(Command)介绍、命令和数据绑定集成应用
要开始使用命令,必须做三件事: 一:定义一个命令 二:定义命令的实现 三:为命令创建一个触发器 WPF中命令系统的基础是一个相对简单的ICommand的接口,代码如下: public interfac ...
- [转]WPF命令集 Command
在我们日常的应用程序操作中,经常要处理各种各样的命令和进行相关的事件处理,比如需要复制.粘贴文本框中的内容;上网查看网页时,可能需要返回上一网页查看相应内容;而当我们播放视频和多媒体时,我们可能要调节 ...
- WPF EventSetter Handler Command
最近做一个工具,突然发现ListBox和ListView等列表控件的MouseDoubleClick事件有时候是获取不到当前双击的行对象数据的,比如这样写: <ListBox Grid.Row= ...
随机推荐
- 【环境配置】配置ndk
1. 背景 Android平台从诞生起,就已经支持C.C++开发. 众所周知,Android的SDK基于Java实现.这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这 ...
- supervisor介绍与安装
前言 今天同事让我帮忙安装一个叫supervisor的软件,但自己确实没接触过这个软件 自己做一下学习的记录 我首先是查询了一下supervisor的官网,初步认识一下这个软件 Supervisor是 ...
- IOS开发之瀑布流照片墙实现
想必大家已经对互联网传统的照片布局方式司空见惯了,这种行列分明的布局虽然对用户来说简洁明了,但是长久的使用难免会产生审美疲劳.现在网上流行一种叫做“瀑布流”的照片布局样式,这种行与列参差不齐的状态着实 ...
- OOAD和UML
ooad: object oriented analysis designer 又有两个分支: ooa(object oriented analysis):what to do ood(object ...
- ubuntu 中数据的迁移
1.先停止mysql /etc/init.d/mysql stop
- RGB(FFFFFF)转255:255:255
NSString *color = model.display_color; long colorLong = strtoul([color cStringUsingEncoding:NSUTF8St ...
- [MFC]图形附加alpha透明通道
改动图形而且附加透明通道: 要附加透明度,能够要把图片转化为32位png图片,然后设置对应的alpha值: 1. 怎样把一张图片改动为32位的Png: a) 读取原图片颜色信息 ...
- linux下安装nginx和配置
1.系统:centos6.8 2.安装准备: 安装nginx前,我们首先要确保系统安装了g++.gcc.openssl-devel.pcre-devel和zlib-devel软件,可通过如图所示命令进 ...
- cocos2dx 3.x ccDrawLine一个坑
ccDrawLine,如果传进去的坐标是INFINITY,画不出来.
- SpringCloud分布式开发五大神兽
SpringCloud分布式开发五大神兽 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix ...