You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RelayCommand的表达式体成员中传递参数至Close方法?

解决RelayCommand传递参数到Close方法的问题

你的问题出在ViewModel中没有把RelayCommand接收到的参数传递给Close方法,以下是具体修正方案:

1. 修改ViewModel的CloseCommand定义

当前你的CloseCommand创建时,lambda表达式没有接收RelayCommand传递的参数,需要把参数传入Close方法:

// 修正后的CloseCommand
public RelayCommand CloseCommand => new RelayCommand(param => Close(param as Window));

2. 完善Close方法的空值检查

为了避免参数转换失败导致空引用异常,在Close方法中增加null判断:

private void Close(Window window)
{
    if (window == null) return; // 空值保护
    // 你的业务逻辑...
    window.Close();
}

替代方案:直接在lambda中处理逻辑

如果不想单独写Close方法,也可以直接在Command的lambda里完成逻辑,这样更简洁:

public RelayCommand CloseCommand => new RelayCommand(param => 
{
    if (param is Window window)
    {
        // 你的业务逻辑...
        window.Close();
    }
});

为什么原来的代码不生效?

你的RelayCommand实现是正确的,XAML中CommandParameter={Binding ElementName=DetalhePassoMW}也能正确传递Window实例,但你原来的execute => Close()没有接收这个参数,导致Close方法始终拿不到Window对象,自然无法执行关闭操作。

内容的提问来源于stack exchange,提问作者user1992831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:57:07