[转][C#][WPF]原生使用 ICommand
传参这里参考:https://www.cnblogs.com/zhlziliaoku/p/5867556.html
文章参考:https://www.bilibili.com/video/BV1nY411a7T8
界面上添加一个按钮
<Button Content="点击" Width="120" Height="31" Command="{Binding showCommand}" CommandParameter="{Binding RelativeSource={RelativeSource self}}"></Button>
也可以修改参数为:
<Button Content="点击" Width="120" Height="31" Command="{Binding showCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"></Button>
后台代码,在构造函数里添加:
this.DataContext = new MainWindowModel();
在 MainWindowModel 类这样写:
public class MainWindowModel { public MyCommand showCommand { get; set; } public MainWindowModel() { showCommand = new MyCommand(Show); } public void Show(object obj) { MessageBox.Show("点击了按钮!"); } }
MyCommand 的定义是:
public class MyCommand : ICommand { Action<object> _action; public MyCommand(Action<object> action) { _action = action; } public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter) { return true; } public void Execute(object parameter) { _action(parameter); } }
这样就完成了界面按钮与后台方法的关联,可以打断点看一下两个传参的区别(一个传参是按钮 ,一个传参是当前窗体)。
标签:
WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!