2

我创建了一个非常标准的 MVVM Light RelayCommand,canExecute 参数为:

() => (customer.Regions.Count > 0)

必要时我打电话RaiseCanExecuteChanged();给 canExecute 并没有正确重新评估。然后我也像这样手动调用它:var canExecute = myCommand.CanExecute(null);,它仍然是错误的。在 I do 之后的下一条语句中var foo = (customer.Regions.Count > 0),它返回正确的结果。这里发生了什么?

命令定义:

SaveCustomerRegionsCommand = new RelayCommand(SaveCustomerRegions, () => (customer.Regions.Count > 0));

customer 是实例化类时设置的私有属性。

4

1 回答 1

0

(来自评论)创建一个 CanExecute 方法以避免使用 lambda 表达式。

正如您所建议的,看起来 MVVM Light Framework 的 IsAlive 属性正在以某种方式干扰。如果您愿意,您可以发布另一个关于此的问题。问候!

于 2013-01-04T12:59:09.647 回答