WPF команды не запускаются (возможно, проблема с маршрутизацией команд) - PullRequest
0 голосов
/ 19 декабря 2010

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

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

Тестируя немного дальше, я обнаружил, что сами команды выполняются, но они не маршрутизируютсяправильно: на самом деле, если я передаю объект, который содержит привязку команды, в качестве параметра "target" в методе Command.Execute (), который они работают ... проблема в том, что у меня не всегда есть цель под рукой (вот почему яиспользуйте перенаправленные команды, потому что они ... хорошо ... перенаправлены!)

Может быть, это что-то действительно глупое, что я не получаю ... Я все еще учусь с WPF.

Спасибо!

1 Ответ

1 голос
/ 12 января 2011

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

Для правильной обработки необходимо либо указать цель самостоятельно, либо создать привязку в диалоговом окне.

Если вы откроете это диалоговое окно из предыдущего окна, укажите свойство Owner, и вы можете использовать его в качестве цели команды.

Надеюсь, это поможет.

...