今天给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 中控件的绑定相关推荐

  1. 在MVVM模式下,ListBox的Command绑定

    最近在学习MVVM模式,我想将ListBox的ItemTemplate中的按钮的Click事件改为用DelegateCommand实现,发现无从下手了: View的内容: <Grid x:Nam ...

  2. WPF MVVM模式下的无阻塞刷新

    MVVM模式下的无阻塞刷新的两种方法: //传统模式下的无刷新调用(主线程开新线程,新线程又调用主线程来更新UI) //第1步先在线程内部计算出需要绑定的数据 //第2步然后再使用Invoke/Beg ...

  3. MVVM模式下实现拖拽

    MVVM模式下实现拖拽 原文:MVVM模式下实现拖拽 在文章开始之前先看一看效果图 我们可以拖拽一个"游戏"给ListBox,并且ListBox也能接受拖拽过来的数据, 但是我们不 ...

  4. WPF随笔(十四)--如何在MVVM模式下关闭窗口

    离上一篇WPF随笔有多久,再度编码WPF项目就有多久.机缘巧合又接下了一个开发WPF桌面程序的任务,又有机会详细研究之前一直忽略的细节. 今天就来谈谈如何在MVVM模式下关闭窗口. 什么?关闭窗口还要 ...

  5. wpf mvvm模式下CommandParameter传递多参

    wpf mvvm模式下CommandParameter传递多参 原文:wpf mvvm模式下CommandParameter传递多参 CommandParameter一般只允许设置一次,所以如果要传递 ...

  6. C# WPF MVVM模式下在主窗体显示子窗体并获取结果

    01 - 前言 在winform中打开一个新的子窗体很简单,直接实例化窗体并show一下就可以: Form2 f2 = new Form2();f2.Show(); 或者 Form2 f2 = new ...

  7. MVVM模式下 触发器多条件判断

    触发的条件一个是textBox1为空另一个是textBox2不为空 多条件判断需要用到触发器MultiDataTrigger 由于在MultiDataTrigger中没有值反转,所以需要在View对应 ...

  8. Windows Phone中使用Local DataBase与ISolateStorage—在MVVM模式下(—)

    像我们知道的一样,Windows Phone支持ISolateStorage,Mango中还新增了使用Linq的SQL CE作为本地数据库.下面我们就用MVVMLight来模拟个消息发送和查看消息历史 ...

  9. C# WPF MVVM模式Prism框架下事件发布与订阅

    01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事 ...

最新文章

  1. 学点 C 语言(35): 函数 - 递归
  2. 西部服务器怎么备份文件,怎么将云服务器数据还原
  3. php 替换 超链接,PHP移除字符串超链接文本的正则表达式
  4. 英伟达DALI加速技巧:让数据预处理速度比原生PyTorch快4倍
  5. python编程从入门到实战的16堂课_好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了!...
  6. Python爬虫基础之Urllib
  7. python实现对解析之后的DOM进行层次化处理升序输出
  8. Python第3次作业
  9. Java+spring+springmvc 基于ssm的银行排队叫号系统#毕业设计
  10. 【编程语言】PHP完全自学手册
  11. 人类学家胡家奇谈科技发展:让它回归理性
  12. python中turtle画树
  13. 3000字作文 小孩调皮
  14. 【Windows】CVE-2017-11882漏洞利用
  15. 联想拯救者R720在重装Win10系统时无法识别固态硬盘的解决方法
  16. SAP-MM知识精解-计划协议-01
  17. [附源码]JAVA毕业设计书香校园阅读平台(系统+LW)
  18. Swift - 微信聊天群头像实现 (群聊的组合头像)
  19. 2021 PyTorch官方实战教程(一)Tensor 详解
  20. 1028 人口普查 (20分)

热门文章

  1. 数字谋定农村建设-农业大健康·万祥军:农业人工智能应用
  2. postgres安装02--postgis
  3. Android优化——UI优化(二) 使用include标签复用布局
  4. 【openCV学习笔记】在Mac上配置openCV步骤详解
  5. Oracle 12C -- truncate的级联操作
  6. iOS 开发中的MVVM介绍(译)
  7. Ubuntu 12.04下spark1.0.0 集群搭建(原创)
  8. ASP.NET MVC 自定义路由中几个需要注意的小细节
  9. 与江岭师弟的讨论 - 关于形式化逻辑的局限以及其它
  10. 利用jvisualvm分析JVM,进行性能调优