Отключить кнопку, пока форма WPF не загрузится - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть форма WPF с кнопками Next и Prev для перехода к следующему и предыдущему месяцам изготовленного на заказ календаря.Я хочу отключить эти кнопки, как только пользователь нажмет на них, и включить их при загрузке данных в формате mext / prev month.Это не позволило бы пользователю многократно нажимать на кнопки, а события, очереди и медленное срабатывание, один за другим.

До сих пор я пытался поместить загрузку данных календаря в поток Dispatcher и поддерживатьфлаг, указывающий, занята страница или нет.Кажется, не работает, и события все еще накапливаются.

Я также попытался использовать команду для нажатия кнопок, чтобы обработчик загрузки загрузил данные, и CanExecute решал, можно ли загрузить данные, на основефлаг IsBusy.Также не работает.

Есть указатели?

Ответы [ 3 ]

0 голосов
/ 17 ноября 2011

Какой тип команды вы используете?

A RelayCommand перезапустит метод CanExecute при изменении одного из свойств, однако DelegateCommand не будет.

Вам нужно вручную вызвать событие CanExecuteChanged для DelegateCommand при изменении параметров CanExecute.

void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "IsBusy")
    {
        // Might need a Cast here if your command is of type ICommand
        LoadDataCommand.RaiseCanExecuteChanged();
    }
}
0 голосов
/ 09 декабря 2011

Я исправил это с помощью BackgroundWorker для загрузки представления и проверки BackgroundWorker.IsBusy в обработчиках событий next / prev.

0 голосов
/ 17 ноября 2011

Я полагаю, у вас есть событие, которое запускается при загрузке месяца.Для меня лучшим решением было бы вручную отключить кнопки на их событии щелчка и включить их обратно, когда загружен месяц.Я не вижу проблем с добавлением некоторого кода в представление, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...