WPF - MouseDown через AutomationPeer на DataGridCell - PullRequest
1 голос
/ 19 декабря 2011

У меня есть следующий код, который вызывает MouseLeftButtonDownEvent для DataGridCell.

DataGridCell dataGridCell = cell as DataGridCell;
MouseButtonEventArgs someEventArgs = 
    new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left);
someEventArgs.RoutedEvent = DataGridCell.MouseLeftButtonDownEvent;
dataGridCell.RaiseEvent(someEventArgs);

Работает нормально, и ячейка выделена. Однако сейчас я пытаюсь сделать то же самое с помощью AutomationPeer, но я не смог найти способ сделать то же самое.

Возможно ли это сделать с помощью AutomationPeers? Если да, то как мне это сделать?

примечание: мне нужно вызвать MouseDownEvent, а не событие Click.

Спасибо

1 Ответ

2 голосов
/ 20 декабря 2011

Краткий ответ - нет:

Существуют классы AutomationPeer, позволяющие классам WPF реализовывать интерфейсы, связанные с UIAutomation, так что клиенты UIAutomation - например,.скринридеры и автоматическое тестирование пользовательского интерфейса высокого (ish) уровня могут их использовать.Эти интерфейсы, как правило, более высокого уровня, чем ввод с помощью мыши или клавиатуры, и вместо этого имеют дело с такими понятиями, как выделение или выделенное состояние.

Так что, если какой-то тестовый код использует метод InvokeProvider.Invoke () UIAutomation для нажатия кнопки,AutomationPeer будет вызывать щелчок даже на кнопке, поэтому он будет таким же, как и при нажатии кнопки, но при этом не будет задействовано никакого ввода мыши или клавиатуры - никаких событий мыши и никаких событий клавиатуры.

Обычноговоря, UIAutomation используется для автоматизации других приложений, а ... классы Peer используются только для предоставления функциональности инфраструктуре UIAutomation;на самом деле очень редко вызывать эти классы в своем собственном коде.

...