【问题标题】:Where to call RaiseCanExecuteChanged?在哪里调用 RaiseCanExecuteChanged?
【发布时间】:2012-03-13 06:29:06
【问题描述】:

我正在使用 MVVM Light Toolkit,我想创建一个 RelayCommand

如果我的 ViewModel 有一些 String 属性,在设置器中调用 RaiseCanExecuteChanged,一切正常,可以在我想要的时候执行命令。

但是如果我更改代码,我会创建一个 Model 类 X,它包含所有这些属性,ViewModel 包含一个类型为 X 的属性,我应该在哪里调用 RaiseCanExecuteChanged?在Model类中没有意义,ViewModel中X的setter没有被调用。

【问题讨论】:

    标签: mvvm mvvm-light relaycommand


    【解决方案1】:

    您可能需要订阅 Model 类 PropertyChanged 事件,并在模型属性更改时引发 RaiseCanExecuteChanged。

    【讨论】:

    • 如此简单明了...谢谢!
    • @Vishal 在VM构造函数中,当你设置模型时,做类似model.PropertyChanged += (o,e) => this.command.RaiseCanExecuteChanged();
    • 我已经尝试过了,但 CanExecute 方法仍然没有触发。我的虚拟机中有一个名为 NewOrder 的属性,它的类型是 Order。内部订单我有 3-4 个简单的字符串和 int 属性以及 ICollection 类型的属性。那么,我需要在这里做任何额外的工作吗??
    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2015-08-11
    • 2019-11-06
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多