ListView не обновляется после вызова RaiseCanExecuteChanged - PullRequest
0 голосов
/ 25 января 2010

У меня есть ListView, который связан с коллекцией моделей представлений. Шаблон Item содержит кнопку, которая связана с командой на модели представления. Когда я устанавливаю свойство ItemSource объекта ListView, я вызываю RaiseCanExecuteChanged для каждой модели представления.

public BindingList<IVehicleViewModel> Vehicles 
    {
        get { return _vehicles; }
        set 
        { 
            if(_vehicles == value) return;
            _vehicles = value;
            OnPropertyChanged("Vehicles");
            RaiseCanExecuteChangedEvents();
        }
    }

Несмотря на то, что я подтвердил, что для CanExecute возвращается значение true для всех моделей представлений, кнопка отображается серым цветом. Единственное, что я заметил, это то, что если я вызываю RaiseCanExecuteChanged, когда просмотр списка уже отрендерен, все работает, как ожидалось, и если я вызываю его до отображения списка, а затем прокручиваю элементы, которые они сортируют.

1 Ответ

0 голосов
/ 25 января 2010

Есть статический метод CommandManager.InvalidateRequerySuggested, который вызывает переоценку исполняемости команды (это слово?), Пытаясь вызывать его всякий раз, когда вы хотите убедиться, что ваш пользовательский интерфейс обновляется, чтобы отразить изменение в результате CanExecute вашей команды.

...