WPF委托命令DelegateCommand的传参方式
首先引用 Microsoft.Practices.Prism
MVVM模式代码如下:
XAML代码:
<!-- 无参方式 --> < Button Content="Test Command" Command="{Binding TestCommand}" /> <!-- 将自己作为参数 --> < Button Content="Test Command2" Command="{Binding TestCommand2}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" > <!-- 将父元素作为参数 --> < Button Content="Test Command3" Command="{Binding TestCommand3}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}}" > |
后台代码:
this .DataContext = new ViewModel(); |
ViewModel代码:
// ViewModel 构造函数 public ViewModel() { CallCOmmand1 = new DelegateCOmmmand(Call1); CallCOmmand2 = new DelegateCOmmmand<Object>(Call2); CallCOmmand3 = new DelegateCOmmmand<Object>(Call3); } // 命令声明 public DelegateCommand CallCommand { get ; private set ; } public DelegateCommand<Object> CallCommand2 { get ; private set ; } public DelegateCommand<Object> CallCommand3 { get ; private set ; } // 命令实现 public void Call1() { } public void Call2( Object obj ) { Button button = obj as Button; } public void Call3( Object obj ) { ParentType parent = obj as ParentType; } |
"唯有高屋建瓴,方可水到渠成"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2014-08-07 CSS外框高度自动适应
2013-08-07 HTML DOM 基础知识,成为javascript晋级高手的必备手册