我创建了一个非常标准的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属性在某种程度上是干扰的,正如你所建议的。如果你喜欢,你可以发布另一个问题。的问候!