5

TabControl のコントロール テンプレートがいくつかのグリッドとスタック パネルを定義する、StartPage.xaml を含むアプリケーションがあります。そのテンプレートには、xaml の中央に itemPresenter があり、その下にスタック パネルがあります。ユーザーにとっては問題なく機能しますが、MS UI オートメーションは、アイテム プレゼンター内のタブ アイテムのみを表示でき、テンプレートの同じレベルで定義されているものは何も表示しません。MS UIA からは見えないスタック パネル内に標準ボタンを追加して、それがカスタム ユーザー コントロールに関連する問題かどうかを確認しようとしましたが、その標準ボタンも MS UIA では表示されません。Snoop を使用すると、テンプレート階層の対応するレベルにある snoop のツリーで、テンプレートのすべての要素を確認できます。しかし、MS UIA はまだそれらを見つけることができません。

MS UIA がページ上でそれらを見つけられないようにするコントロールの何が問題になるのでしょうか?

4

1 に答える 1

6

最後に、問題を検出できました。TabControl はさまざまなコントロールの束でテンプレート化されましたが、AutomationPeer は同じままで、TabControl の子として TabItems のみを認識します。TabControl をサブクラス化し、OnCreateAutomation をオーバーライドして、このコントロールのすべての子 UIElement を列挙できる GenericAutomationPeer を作成して返します。UIA Verify は、TabControl テンプレートから追加のコントロールを確認できるようになりました。

GenericAutomationPeer の実装は次の場所にあります: http://www.colinsalmcorner.com/2011/11/genericautomationpeer-helping-coded-ui.html その記事の著者に感謝します!

于 2013-05-29T12:39:42.060 に答える