3

Вопрос по event-handling, wpf, c# – Как установить EvenHandler в WPF для всех окон (всего приложения)?

Как я могу установить обработчик событий (например,keydown) для всего решения, а не одного окна?

  • Error: User Rate Limit Exceeded

    от Programer
  • Error: User Rate Limit Exceeded

    от Programer
  • Error: User Rate Limit Exceedednew RoutedEventHandler(..)Error: User Rate Limit Exceedednew KeyEventHandler(Window_KeyDown)

    от
  • Error: User Rate Limit Exceeded

    от Programer
  • Error: User Rate Limit Exceeded

    от Programer
5 ответов
  • 3

    Как насчет этого:

     public partial class App : Application {
            protected override void OnStartup(StartupEventArgs e) {
                EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(KeyDown));
                base.OnStartup(e);
            }
    
            void KeyDown(object sender, RoutedEventArgs e) {
    
            }
        }
    

  • 0

    Вы должны использовать делегата

    чтобы связать событие (где бы оно ни было) и функцию, которую вы готовы работать, когда событие прыгает.

    Error: User Rate Limit Exceeded

    MZE.

  • 10

    Зарегистрируйте глобальный обработчик событий в своем классе приложени

    я (App.cs), например так:

    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
    
            EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(Window_KeyDown));
        }
    
        void Window_KeyDown(object sender, RoutedEventArgs e)
        {
            // your code here
        }
    }
    

    Это будет обрабатыватьKeyDown событие для любогоWindowError: User Rate Limit Exceedede вKeyEventArgsError: User Rate Limit Exceeded

  • 0

    Error: User Rate Limit Exceeded

    KeyDownKeyDown

    Observer шаблон

  • 0

    Error: User Rate Limit Exceeded


     для клавиатуры).