2009-02-11 2 views
0

У меня есть одна RoutedUICommand, к которой можно получить доступ через различные места в пользовательском интерфейсе. Например, глобальные клавиатуры, меню, ContextMenu или Button. Код, который должен быть запущен в методах RoutedUICommand.CanExecute и RoutedUICommand.Execute, зависит от того, какой элемент пользовательского интерфейса использовался. Как я могу достичь этой дифференциации. Я думал, что могу использовать (Can) ExecutedRoutedEventArgs.Source или OrigianlSource, но источник всегда один и тот же. Это основное окно Root. Как это обычно достигается? Что я могу делать неправильно?contextsitiveitive RoutedUICommand.CanExecute, Execute

ответ

0

Обычно у вас могут быть разные реализации CommandBinding для разных «целей» - различное поведение для каждого «источника» необычно.

Не могли бы вы привести пример того, что вы пытаетесь сделать?

+0

Точно, чтобы иметь разные исходные коды, я собираю привязки команд для источника esch. Таким образом, я мог бы отличить, кто является источником, исследуя отправителя. – bitbonk

1

Если вам нужен другой код для запуска в зависимости от пользовательского интерфейса, который вызывает команду, вы, вероятно, делаете что-то неправильно.

Если у вас есть что-то вроде просто чего-то от нажатия клавиши или открытия диалогового окна с запросом дополнительной информации из меню, вы должны разделить это на две команды (например, команды MS Office «Печать» и «Быстрая печать»).

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

И если вы решите игнорировать мой совет выше, взгляните на свойство CommandParameter, вы можете установить другое значение параметра для каждого элемента пользовательского интерфейса, по крайней мере, с ним вы можете сохранить иллюзию интерфейса/логики команды разделения предназначены для обеспечения.