WPF 通过 CommandParameter 传递当前窗体到 ViewModel

WPF 通过 CommandParameter 传递当前窗体到 ViewModel

在应用 Command 模式中,需要在View上点击 一个按钮,需要将当前窗体作为参数传递为 command

两种方式传递当前窗体
1、通过窗体名称(假设窗体名称为 ThisWindow)


   <ButtonCommand="CancelCommand"CommandParameter="{Binding ElementName=ThisWindow}"/>


2、绑定到 RelativeSource
 

<ButtonCommand="CancelCommand"CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>


-------------------------------------------------------------------------------------------------------------------
以下是ViewModel中的 Command 代码

  private DelegateCommand<Window> _cancelCommand = null;
        public DelegateCommand<Window> CancelCommand
        {
            get
            {
                if (_cancelCommand == null)
                {
                    _cancelCommand = new DelegateCommand<Window>(Cancel);
                }
                return _cancelCommand;
            }
        }
 
        void Cancel(Window window)
        {    
            if (window != null)
            {  
                window.DialogResult = false;
                window.Close();
            }
        }



转载自:https://blog.csdn.net/kw269937519/article/details/108510398
参考网址:http://stackoverflow.com/questions/3504332/passing-the-current-window-as-a-commandparameter

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值