WPF - 通过DataGridCell上的AutomationPeer的MouseDown

时间:2011-12-19 15:38:53

标签: wpf wpfdatagrid ui-automation mousedown datagridcell

我有以下代码在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事件。

由于

1 个答案:

答案 0 :(得分:2)

简短的回答是否定的:

AutomationPeer类允许WPF类实现与UIAutomation相关的接口,以便UIAutomation客户端 - 例如。 screenreaders和high(ish)级自动UI测试可以使用它们。这些接口通常比鼠标或键盘输入更高级别,而是处理选择或选择状态等概念。

因此,如果某些测试代码使用UIAutomation的InvokeProvider.Invoke()方法按下按钮,则AutomationPeer会在按钮上引发Click even,因此按下按钮时它会一样,但是不会有任何涉及鼠标或键盘输入 - 没有鼠标事件,也没有键盘事件。

一般来说,UIAutomation用于自动化其他应用程序,而...对等类仅用于向UIAutomation基础架构公开功能;在你自己的代码中实际调用这些类是非常罕见的。