我有一个绑定到视图模型集合的ListView。 Item模板包含一个绑定到视图模型上的命令的按钮。当我设置ListView的ItemsSource的属性时,我为每个视图模型调用RaiseCanExecuteChanged。
public BindingList<IVehicleViewModel> Vehicles
{
get { return _vehicles; }
set
{
if(_vehicles == value) return;
_vehicles = value;
OnPropertyChanged("Vehicles");
RaiseCanExecuteChangedEvents();
}
}
尽管我已经确认在所有视图模型上为CanExecute返回了true,但按钮显示为灰色。 我唯一注意到的是,如果我在列表视图已经渲染时调用了RaiseCanExecuteChanged,一切都按预期工作,如果我在渲染列表视图之前调用它,然后滚动浏览它们自己排序的项目。
答案 0 :(得分:0)
有一个静态方法CommandManager.InvalidateRequerySuggested
强制重新评估命令的可执行性(是一个单词吗?)每当你想确保你的UI更新反映CanExecute
结果的变化时,尝试调用它你的命令。