0

我有一个绑定到视图模型集合的 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 呈现之前调用它,然后滚动浏览它们自己整理的项目。

4

1 回答 1

0

有一种静态方法CommandManager.InvalidateRequerySuggested会强制重新评估命令的可执行性(这是一个词吗?),只要您想确保 UI 更新以反映CanExecute命令结果的变化,请尝试调用它。

于 2010-01-25T10:02:48.700 回答