WPF: Как сделать кнопку (splitbutton) включенной, когда связанная команда не может быть выполнена? - PullRequest
0 голосов
/ 30 ноября 2009

Я создаю пользовательскую кнопку разделения, которая состоит из двух перекрывающихся кнопок, и всплывающее окно - вот так (на рисунке показана общая кнопка разделения):

SplitButton http://windowsclient.net/wf/blogs/jfoscoding/splitbutton.PNG

My SplitButton открывает всплывающее окно при нажатии правой стороны со стрелкой и выполняет команду SplitButton.Command при нажатии основной кнопки.

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

Я выполнил это, но проблема в следующем:

  • кнопка SplitButton разделена на подклассы из кнопки ToggleButton
  • в ControlTemplate, у меня есть ToggleButton (нижняя) и Button (короче, с наложением сверху)
  • Button.Command="{TemplateBinding Command}" (так что я могу сделать <SplitButton Command="{Binding MyDefaultAction}">...)
  • проблема: когда команда не может быть выполнена, весь SplitButton отключается.

Я бы хотел сохранить ту же команду, но переопределить поведение кнопки, чтобы она не отключалась, когда Command.CanExecute () возвращает false. Как я могу это сделать?

Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2009

Команда - это свойство зависимости, и я уверен, что оно наследуется любым элементом управления в визуальном дереве. Поэтому для кнопки, которую вы не хотите отключать, задайте для свойства команды другую команду или установите для нее значение null.

С другой стороны,

Создайте свое собственное свойство зависимости ... как это

Свойство зависимости

...