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;
}

  

  

  

posted @   microsoftzhcn  阅读(1191)  评论(0编辑  收藏  举报
编辑推荐:
· 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晋级高手的必备手册
点击右上角即可分享
微信分享提示