MVVM 下 ContextMenu的命令绑定

简介: 原文:MVVM 下 ContextMenu的命令绑定  由于ContextMenu不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}”是行不通的。
原文: MVVM 下 ContextMenu的命令绑定

  由于ContextMenu不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}”是行不通的。因此可通过以下两个方式解决绑定的问题。

1、使用资源的方式

 1         <Button Content="Test" Command="{Binding TestCommand}">
 2             <Button.Resources>
 3                 <vm:ThreeViewModel x:Key="Three"/>
 4             </Button.Resources>
 5             <Button.ContextMenu>
 6                 <ContextMenu>
 7                     <MenuItem Header="测试" Command="{Binding TestCommand,Source={StaticResource Three}}"/>
 8                 </ContextMenu>
 9             </Button.ContextMenu>
10         </Button>
11     

 

2、利用ContextMenu的PlacementTarget属性

        <Button Content="Test" Command="{Binding TestCommand}">
            <Button.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="测试" Command="{Binding PlacementTarget.DataContext.TestCommand,  RelativeSource={RelativeSource AncestorType=ContextMenu} }"/>
                </ContextMenu>
            </Button.ContextMenu>
        </Button>

 

目录
相关文章
|
消息中间件 缓存 监控
spring boot 高级篇
spring boot 高级篇
534 1
|
数据采集 监控 网络协议
MES系统跟车间设备怎么连接?设备管理后的好处有哪些?
万界星空科技MES系统通过直接联网通信、工业网关采集和远程IO采集三种方式与车间设备连接,实现设备状态实时监控、统一管理、异常报警、故障记录和预防性维护。设备联网能提升生产效率,降低生产成本,推动数字化工厂建设。
414 2
WPF使用DataGridComboBoxColumn完成绑定
 在使用DataGrid的时候,有时候需要使某些列为ComboBox,这时自然想到使用DataGridComboBoxColumn,但是如果使用的是ItemsSource数据绑定后台的对象,就会发现,这根本就不能用。
2386 0
|
C# 开发者 Windows
WPF/C#:ProgressBar的基本使用
WPF/C#:ProgressBar的基本使用
230 0
|
10月前
|
存储 Java 数据库
Java “ClassCastException”解决
Java中的“ClassCastException”是在运行时尝试将对象强制转换为与其实际类型不兼容的类型时引发的异常。解决方法包括:1. 检查类型转换前使用`instanceof`关键字进行类型判断;2. 确保对象的实际类型与目标类型一致;3. 审查代码逻辑,避免不必要的类型转换。
860 4
|
SQL Java 数据库连接
数据库迁移不再难:Flyway 与 Liquibase 大比拼,哪个才是你的真命天子?
【9月更文挑战第3天】数据库迁移在软件开发中至关重要,尤其在使用 ORM 框架如 Hibernate 时。为确保部署时能顺利应用最新的数据库变更,开发者常使用自动化工具。Flyway 和 Liquibase 是当前流行的两种选择,均能有效管理数据库版本控制。Flyway 采用 SQL 脚本表示变更,简单易用;Liquibase 支持多种脚本格式,功能更强大,适合复杂项目。本文将对比这两种工具的特点,并通过示例展示各自的优缺点,帮助开发者根据项目需求做出合适的选择。
2466 1
|
设计模式 前端开发 C#
WPF/C#:理解与实现WPF中的MVVM模式
WPF/C#:理解与实现WPF中的MVVM模式
1032 0
|
Linux 程序员
Linux系统中驱动之设备树的platform驱动实现
Linux系统中驱动之设备树的platform驱动实现
469 0
|
SQL 开发框架 .NET
C#进阶-LINQ表达式之GroupBy分组查询
本篇文章我们将演示LINQ扩展包基础语法里的GroupBy分组查询,并实现投影等实际操作中常用的类型转换手法。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。LINQ语法第一次接触难免感到陌生,最好的学习方式就是在项目中多去使用,相信会有很多感悟。
482 0
|
Web App开发 JavaScript 前端开发
从浏览器原理出发聊聊Chrome插件
本文从浏览器架构演进、插件运行机制、插件基本介绍和一些常见的插件实现思路几个方向聊聊Chrome插件。