Кнопка, IInvokeProvider и нажмите - PullRequest
1 голос
/ 10 июня 2011

Я просто пытаюсь понять это.Почему кнопка IInvokeProvider вызывает событие click без каких-либо явных настроек?Что если бы я хотел автоматизировать другой метод, например MouseEnter или MouseLeave?И что заставляет предполагать, что когда вы вызываете метод Invoke(), он должен выполнить событие Click?

Это мой код:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    ButtonAutomationPeer buttonPeer = new ButtonAutomationPeer(button);
    IInvokeProvider invokeProvider = buttonPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
    invokeProvider.Invoke(); // this triggers button_Click handler
}

private void button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button clicked!");
}

Спасибо!

1 Ответ

3 голосов
/ 10 июня 2011

Интерфейс IInvokeProvider является частью семейства пространств имен System.Windows.Automation, также называемого WUIA (Windows User Automation Automation) .WUIA предназначена для поддержки клиентов с расширенными возможностями (программ чтения с экрана и т. П.), Например, для слепых пользователей.Метод IInvokeProvider.Invoke () вызывает действие по умолчанию для реализующего элемента пользовательского интерфейса.В вашем случае действие по умолчанию для кнопки - это событие щелчка.

Вам придется вызывать события мыши, используя другой интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...