Отключение элементов управления на основе привязок команд / команд WPF - PullRequest
1 голос
/ 15 сентября 2009

Использование команд удобно, потому что WPF автоматически отключает источник команды (обычно кнопка), когда команда не может быть выполнена.

Очевидно, что эта функция недоступна для элементов управления, которые не являются источником команд, например ListBox.

Каков наилучший способ включить эту функцию для некомандных источников управления. Я подумал о паре решений:

  • Оберните ListBox с помощью Button и измените ControlTemplate кнопки, чтобы не было хрома.
  • Создайте невидимое Button и свяжите свойство IsEnabled ListBox со свойством IsEnabled Button
  • Создать потомка ListBox, который реализует ICommandSource.

Есть ли более элегантный способ?

1 Ответ

4 голосов
/ 15 сентября 2009

Вы можете создать свойство bool в своем коде (или просмотреть модель), например CanSelect или CanEdit, и привязать к нему свойство IsEnabled вашего ListBox. Просто установите значение этого нового свойства в методе CanExecute соответствующей команды.

...