relaycommand CanExecute返回错误的值



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

() => (customer.Regions.)计数> 0)

必要时,我调用RaiseCanExecuteChanged();, canExecute没有正确重新计算。然后我也像这样手动调用它:var canExecute = myCommand.CanExecute(null);,它仍然是错误的。在我做var foo = (customer.Regions.Count > 0)之后的下一个语句中,它返回正确的结果。这是怎么回事?

命令定义:

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

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

(from comment)创建一个CanExecute方法来避免使用lambda表达式。

看起来MVVM光框架的IsAlive属性在某种程度上是干扰的,正如你所建议的。如果你喜欢,你可以发布另一个问题。的问候!

相关内容

  • 没有找到相关文章

最新更新