1

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を使用してそれを行うことは可能ですか?はいの場合、どうすればよいですか?

注:Clickイベントではなく、MouseDownEventを発生させるために必要です。

ありがとう

4

1 に答える 1

2

簡単な答えはノーです:

AutomationPeerクラスは、WPFクラスがUIAutomation関連のインターフェイスを実装できるようにするために存在します。これにより、UIAutomationクライアント(例:スクリーンリーダーと高レベルの自動UIテストで使用できます。これらのインターフェイスは通常、マウスやキーボードの入力よりも高レベルであり、代わりに選択や選択された状態などの概念を扱います。

したがって、一部のテストコードでUIAutomationのInvokeProvider.Invoke()メソッドを使用してボタンを押すと、AutomationPeerはボタンでもクリックを発生させるため、ボタンが押されたときと同じようになりますが、マウスやキーボードはありません。入力が含まれます-マウスイベントもキーボードイベントもありません。

一般的に、UIAutomationは他のアプリを自動化するために使用され、... Peerクラスは、UIAutomationインフラストラクチャに機能を公開するためにのみ使用されます。独自のコードでこれらのクラスを実際に呼び出すことは非常にまれです。

于 2011-12-20T06:39:51.187 に答える