WPF-команда не выполняется - PullRequest
0 голосов
/ 01 октября 2010

У меня есть кнопка на панели инструментов, команда которой установлена ​​на «MyControl.Print» (например). В элементе управления команда добавляется в привязки команд, включая как Execute, так и CanExecute.

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

Есть ли способ, которым я могу убедиться, что кнопка включена, независимо от того, был ли выбран элемент управления или нет?

Ответы [ 2 ]

1 голос
/ 01 октября 2010

CommandManager.InvalidateRequerySuggested заставит менеджер команд повторно вызвать все ваши методы CanExecute и должен отключить кнопку.Может быть, назвать это onload?

1 голос
/ 01 октября 2010

Поскольку CanExecute не запускается, я думаю, вы могли бы обратить внимание на главный недостаток RoutedCommands - то, как они туннелируют и пузыривают, могут оставить высокосоставный интерфейс, не способный доставлять команды куда-либо полезному.По этой причине мы в конечном итоге перешли к DelegateCommands из (я думаю) Microsoft CAG.Никаких других вещей, только команды.Работает намного лучше и не так тесно привязан к интерфейсу.

О, другой ответ поднимает хороший вопрос.Я предполагал, что вы имели в виду, что для печати вашего MyControl необходимо сфокусироваться на клавиатуре.Это только в первый раз и после этого работает?

Я рекомендую http://msdn.microsoft.com/en-us/library/ff921126(PandP.20).aspx в качестве довольно хорошей отправной точки.Вам не нужно слишком сильно беспокоиться о IActiveAware, поскольку вы надеетесь, что эта команда будет доступна постоянно (или, по крайней мере, пусть ее доступность будет определена CanExecute).

...