MVVM模式下 DataTemplate 中控件的绑定
今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令。现找到了正确的绑定方式,特来记录一下。
先上个正确的示例:
<ListBox Grid.Column="0" ItemsSource="{Binding CallBussiness}"><ListBox.ItemsPanel><ItemsPanelTemplate><WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" /></ItemsPanelTemplate></ListBox.ItemsPanel><ListBox.ItemTemplate><DataTemplate><StackPanel> <TextBlock Text="{Binding Property1}"/><Button VerticalAlignment="Top" HorizontalAlignment="Left" Margin="25,0,0,0" Command="{Binding Path=DataContext.HandUpCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}"CommandParameter="{Binding}"/> </StackPanel></DataTemplate></ItemsControl.ItemTemplate> </ListBox>
因为使用DataTemplate时,ListBoxItem的DataContext将是ItemsSource绑定的列表的项,其类型就是列表中的单个Model。所以不能使用默认的绑定源,而要使用相对源(RelativeSource)。并且MVVM模式下,VM一般都是绑定窗口到DataContext,窗口中的控件再继承(可能这个词不是很准确)窗口的DataContext,因此指定相对源后,Path还需要从DataContext属性开始找想要的命令。如上面的Button,不能直接Path=HandUpCommand,因为HandUpCommand不是直接存在ListBox中的。
转载于:https://www.cnblogs.com/MXJ-Blogs/p/7716672.html
MVVM模式下 DataTemplate 中控件的绑定相关推荐
- 在MVVM模式下,ListBox的Command绑定
最近在学习MVVM模式,我想将ListBox的ItemTemplate中的按钮的Click事件改为用DelegateCommand实现,发现无从下手了: View的内容: <Grid x:Nam ...
- WPF MVVM模式下的无阻塞刷新
MVVM模式下的无阻塞刷新的两种方法: //传统模式下的无刷新调用(主线程开新线程,新线程又调用主线程来更新UI) //第1步先在线程内部计算出需要绑定的数据 //第2步然后再使用Invoke/Beg ...
- MVVM模式下实现拖拽
MVVM模式下实现拖拽 原文:MVVM模式下实现拖拽 在文章开始之前先看一看效果图 我们可以拖拽一个"游戏"给ListBox,并且ListBox也能接受拖拽过来的数据, 但是我们不 ...
- WPF随笔(十四)--如何在MVVM模式下关闭窗口
离上一篇WPF随笔有多久,再度编码WPF项目就有多久.机缘巧合又接下了一个开发WPF桌面程序的任务,又有机会详细研究之前一直忽略的细节. 今天就来谈谈如何在MVVM模式下关闭窗口. 什么?关闭窗口还要 ...
- wpf mvvm模式下CommandParameter传递多参
wpf mvvm模式下CommandParameter传递多参 原文:wpf mvvm模式下CommandParameter传递多参 CommandParameter一般只允许设置一次,所以如果要传递 ...
- C# WPF MVVM模式下在主窗体显示子窗体并获取结果
01 - 前言 在winform中打开一个新的子窗体很简单,直接实例化窗体并show一下就可以: Form2 f2 = new Form2();f2.Show(); 或者 Form2 f2 = new ...
- MVVM模式下 触发器多条件判断
触发的条件一个是textBox1为空另一个是textBox2不为空 多条件判断需要用到触发器MultiDataTrigger 由于在MultiDataTrigger中没有值反转,所以需要在View对应 ...
- Windows Phone中使用Local DataBase与ISolateStorage—在MVVM模式下(—)
像我们知道的一样,Windows Phone支持ISolateStorage,Mango中还新增了使用Linq的SQL CE作为本地数据库.下面我们就用MVVMLight来模拟个消息发送和查看消息历史 ...
- C# WPF MVVM模式Prism框架下事件发布与订阅
01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事 ...
最新文章
- 学点 C 语言(35): 函数 - 递归
- 西部服务器怎么备份文件,怎么将云服务器数据还原
- php 替换 超链接,PHP移除字符串超链接文本的正则表达式
- 英伟达DALI加速技巧:让数据预处理速度比原生PyTorch快4倍
- python编程从入门到实战的16堂课_好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了!...
- Python爬虫基础之Urllib
- python实现对解析之后的DOM进行层次化处理升序输出
- Python第3次作业
- Java+spring+springmvc 基于ssm的银行排队叫号系统#毕业设计
- 【编程语言】PHP完全自学手册
- 人类学家胡家奇谈科技发展:让它回归理性
- python中turtle画树
- 3000字作文 小孩调皮
- 【Windows】CVE-2017-11882漏洞利用
- 联想拯救者R720在重装Win10系统时无法识别固态硬盘的解决方法
- SAP-MM知识精解-计划协议-01
- [附源码]JAVA毕业设计书香校园阅读平台(系统+LW)
- Swift - 微信聊天群头像实现 (群聊的组合头像)
- 2021 PyTorch官方实战教程(一)Tensor 详解
- 1028 人口普查 (20分)
热门文章
- 数字谋定农村建设-农业大健康·万祥军:农业人工智能应用
- postgres安装02--postgis
- Android优化——UI优化(二) 使用include标签复用布局
- 【openCV学习笔记】在Mac上配置openCV步骤详解
- Oracle 12C -- truncate的级联操作
- iOS 开发中的MVVM介绍(译)
- Ubuntu 12.04下spark1.0.0 集群搭建(原创)
- ASP.NET MVC 自定义路由中几个需要注意的小细节
- 与江岭师弟的讨论 - 关于形式化逻辑的局限以及其它
- 利用jvisualvm分析JVM,进行性能调优