【问题标题】:Command Binding without parameter不带参数的命令绑定
【发布时间】:2013-10-07 18:46:28
【问题描述】:

我正在WPF中学习MVVM。

如果该命令不带对象参数,我将如何将命令绑定到控件?我目前正在使用 RelayCommand 方法,这将不允许我传递没有对象参数的方法/动作,正如 RelayCommand 类中的动作签名所指定的那样。

所以我的问题是,如果我想在不带任何参数的情况下执行命令,我的方法是什么?

【问题讨论】:

  • 我们可以看看你的代码吗?

标签: .net wpf c#-4.0


【解决方案1】:

您可以使用Microsoft Prism 库中包含的DelegateCommand

此命令允许您定义所需的任何参数类型。

例如

ICommand MyCommand = new DelegateCommand<AnyType>(Execute, CanExecute);

private void Execute(AnyType e) {} private bool CanExecute(AnyType e) { return true; }

或者,你需要的例子:

ICommand MyCommand = new DelegateCommand(Execute, CanExecute);

private void Execute() {} private bool CanExecute() {return true;}

希望,它会有所帮助。

【讨论】:

    【解决方案2】:

    我自己不使用RelayCommand,更喜欢使用我自己的实现,但我认为它们足够相似,可以回答您的问题:

    public ICommand ActivateCommand
    {
        get { return new RelayCommand(action => Activate(), canExecute => CanActivate()); }
    }
    

    这里,CommandParameteractioncanExecute 输入参数表示。您必须在此处声明它们,但您没有必须使用它们,如上所示。显然,与所有 lambda 表达式一样,您可以随意称呼它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2015-05-08
      • 2015-07-29
      相关资源
      最近更新 更多