Я строй собственного splitbutton, который состоит из двух перекрывающихся кнопок и всплывающие окон - как это (изображение показывает некоторые общие splitbutton):WPF: Как сделать кнопку (splitbutton) включенной, когда ее связанная команда не может выполнить?
SplitButton http://windowsclient.net/wf/blogs/jfoscoding/splitbutton.PNG
Мой SplitButton открывает всплывающее Whan правой стороны со стрелкой щелчка, и выполняет SplitButton.Command, когда нажата основная кнопка.
В моем случае, однако иногда действие по умолчанию не может быть выполнено, и в тех случаях, когда нажата основная кнопка, я бы хотел открыть всплывающее окно.
я достиг его, но проблема заключается в следующем:
- SplitButton является подклассами ToggleButton
- в ControlTemplate, у меня есть ToggleButton (нижний) и кнопку (короче, наложенных друг на друга на вершине)
Button.Command="{TemplateBinding Command}"
(так что я могу сделать<SplitButton Command="{Binding MyDefaultAction}">...
)- проблемы: когда команда не может выполнить, весь SplitButton получает инвалид.
Я хотел бы, чтобы с той же командой, но переопределить поведение кнопки так, чтобы он не стал инвалидом, когда Command.CanExecute() возвращает ложь. Как я могу это сделать?
Спасибо!
Ну, проблема в том, что я все равно хочу кнопку, чтобы выполнить данную команду, я только не» t он должен быть отключен, когда команда не может выполнить. Однако я посмотрел на реализацию в ButtonBase (с Reflector), и отключение кнопки выполняется частными методами - поэтому я не могу их переопределить. Мне, вероятно, придется вырвать необходимую функциональность из демонстрационного представления Reflector и создать ICommand DP, который будет находиться под моим контролем. Спасибо за идею. –