Intereting Posts
Получите GenericType-Name в хорошем формате, используя Reflection on C # C # переменной длины args, что лучше и почему: __arglist, params array или Dictionary ? Кэширование двоичного файла в C # С. Параметрами. Конструирование с использованием ninject 2.0 Может ли задача иметь несколько ожидающих? C # Application.Run без формы Как заставить ToString () отображаться в Debug Добавление заголовка пользовательского запроса работает для IIS 7.0, но не для сервера Asp.net dev Почему выражение инициализатора коллекции требует, чтобы IEnumerable был реализован? Есть ли способ изменить значок приложения ClickOnce в разделе «Установка и удаление программ»? Преобразование выражения запроса linq с несколькими аргументами в синтаксис метода расширения Сообщения консоли отображаются в неправильном порядке, когда сообщают о прогрессе с помощью IProgress.Report () Передача динамического объекта методу C # возвращает тип возврата Динамический запрос linq с несколькими / неизвестными критериями RegEx – повторное использование подвыражений

Как отключить кнопку в WPF с использованием шаблона MVVM?

Я пытаюсь понять WPF и MVVM и добился хороших результатов. У WPF и MVVM стороны идут хорошо.

Тем не менее, XAML и привязка данных – это совершенно другая история 🙂

Как я могу «отключить» кнопку?

Например, у меня есть свойство CanClose в моей модели просмотра, которая определяет, может ли приложение в настоящее время закрываться. Если рабочий stream не выполняет что-то, тогда для этого свойства установлено значение false, и я хотел бы либо зачеркнуть кнопку, либо каким-то образом визуально отключить кнопку «Закрыть» с помощью какого-то привязки.

Как мне это сделать?

Спасибо!

Редактировать –

Жаль, что я могу только принять один ответ.

Эти два ответа очень помогли мне. На посту Кента он сделал еще один шаг, объяснив, почему вы должны внедрять инфраструктуру команд в своем приложении, а не отключать кнопку так, как я спросил:

Как отключить кнопку в WPF с использованием шаблона MVVM?

И ответ на мой оригинальный вопрос:

Как отключить кнопку в WPF с использованием шаблона MVVM?

Путем использования шаблона команды. В вашей модели просмотра:

public class MyViewModel : ViewModel { private readonly ICommand someCommand; public MyViewModel() { this.someCommand = new DelegateCommand(this.DoSomething, this.CanDoSomething); } public ICommand SomeCommand { get { return this.someCommand; } } private void DoSomething(object state) { // do something here } private bool CanDoSomething(object state) { // return true/false here is enabled/disable button } } 

В вашем XAML:

  

Прочитайте это сообщение, чтобы узнать больше о DelegateCommand .

Просто привяжите свойство IsEnabled Button к CanClose:

  

Если вы вернете CanExecute из ICommand значение false, тогда кнопка будет отключена. Итак, независимо от того, к какой команде привязана ваша кнопка, посмотрите, можете ли вы вернуть CanExecute значение false, если вы хотите его отключить.

Это тоже работает:

Вид :

    

ViewModel :

  private bool _btnEnabled; public bool btnEnabled { get { return _btnEnabled; } set { if (_btnEnabled != value) { _btnEnabled = value; OnPropertyChanged(); } } }