Использовать глобальные привязки команд в WPF и C#

Пример Использование пользовательских привязок команд в WPF и C# объясняет, как вы можете использовать программу для пользовательских команд. (Это запутанная тема, поэтому прочтите этот пост, прежде чем продолжить с этим.)

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

Прежде чем я покажу, как это сделать, позвольте мне немного объяснить этот пример. Когда он загружается, главное окно создает вторичное окно типа SecondaryWindow. Этот класс определяет следующее публичное поле.

В главном окне этот код используется для создания и отображения вторичного окна.

Этот код создает SecondaryWindow, устанавливает его поле MainWindow для ссылки на главное окно и отображает окно. (Я кратко опишу опущенные операторы.)

Главное окно определяет следующее публичное поле.

Оба окна «Включить кнопки« Разрешить »переключают это значение. Например, кнопка «Разрешить включение вторичного окна» использует этот код.

Теперь позвольте мне рассказать о команде. Следующий код показывает полный обработчик события Loaded главного окна главного окна.

Этот код создает команду более или менее так же, как в предыдущем примере. Он создает коллекцию жестов, определяет жест Ctrl + B и использует коллекцию для создания RoutedUICommand.

Этот код создает команду более или менее так же, как в предыдущем примере. Он создает коллекцию жестов, определяет жест Ctrl + B и использует коллекцию для создания RoutedUICommand.

...

Далее идет новый материал. После создания вторичного окна код устанавливает это свойство btnChangeBackground этого окна в ту же команду. Строка, выделенная синим цветом, добавляет привязку к коллекции CommandBindings вторичного окна. Я опускаю этот шаг, вторичное окно не получает уведомления, когда обработчик события CanExecute команды запускается, поэтому он не может обновить свою кнопку фона.

Остальная часть примера похожа на предыдущую. Следующий код показывает обработчики событий CanExecute и Executed.

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

Источник: http://csharphelper.com/blog/2015/09/use-global-command-bindings-in-wpf-and-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *