我有以下代码在DataGridCell上引发了MouseLeftButtonDownEvent。
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事件。
由于
答案 0 :(得分:2)
简短的回答是否定的:
AutomationPeer类允许WPF类实现与UIAutomation相关的接口,以便UIAutomation客户端 - 例如。 screenreaders和high(ish)级自动UI测试可以使用它们。这些接口通常比鼠标或键盘输入更高级别,而是处理选择或选择状态等概念。
因此,如果某些测试代码使用UIAutomation的InvokeProvider.Invoke()方法按下按钮,则AutomationPeer会在按钮上引发Click even,因此按下按钮时它会一样,但是不会有任何涉及鼠标或键盘输入 - 没有鼠标事件,也没有键盘事件。
一般来说,UIAutomation用于自动化其他应用程序,而...对等类仅用于向UIAutomation基础架构公开功能;在你自己的代码中实际调用这些类是非常罕见的。