我有一个绑定到视图模型集合的 ListView。Item 模板包含一个绑定到视图模型上的命令的按钮。当我设置 ListView 的 ItemsSource 的属性时,我为每个视图模型调用 RaiseCanExecuteChanged。
public BindingList<IVehicleViewModel> Vehicles
{
get { return _vehicles; }
set
{
if(_vehicles == value) return;
_vehicles = value;
OnPropertyChanged("Vehicles");
RaiseCanExecuteChangedEvents();
}
}
尽管我已经验证了所有视图模型上的 CanExecute 都返回了 true,但该按钮显示为灰色。我唯一注意到的是,如果我在 listview 已经呈现时调用 RaiseCanExecuteChanged,一切都会按预期工作,如果我在 listview 呈现之前调用它,然后滚动浏览它们自己整理的项目。