摘要
在我的WPF应用程序中,我需要一个带左侧按钮的TabControl,所以我用我想要的布局定义了一个ControlTemplate,它工作正常。
但是,我的测试人员的自动化测试工具无法看到选项卡的任何内容,包括当前选定的选项卡。
问题:如何通过自动化测试工具保持我的TabControl可测试,同时仍然定义ControlTemplate?
详情
我正在使用WPF 3.5开发WPF应用程序 我的测试人员正在使用名为QTP的自动化测试工具 他说他可以用UISpy.exe
测试你能看到的任何东西示例WPF应用程序(Xaml):
<Window x:Class="TabControlTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Tab Control Test"
Height="300"
Width="300">
<Window.Resources>
<ControlTemplate x:Key="ButtonsOnLeftTabLayout"
TargetType="{x:Type TabControl}">
<DockPanel>
<StackPanel DockPanel.Dock="Left"
IsItemsHost="True" />
<ContentPresenter Content="{TemplateBinding SelectedContent}" />
</DockPanel>
</ControlTemplate>
</Window.Resources>
<TabControl Template="{StaticResource ButtonsOnLeftTabLayout}">
<TabItem Header="Tab 1">
<StackPanel>
<Button HorizontalAlignment="Center">Button 1</Button>
</StackPanel>
</TabItem>
<TabItem Header="Tab 2">
<StackPanel>
<Button HorizontalAlignment="Center">Button 2</Button>
</StackPanel>
</TabItem>
</TabControl>
</Window>
到目前为止我的搜索结果:
(搜索之后我终于找到了答案,但它花了比我想象的要长的时间,而且AutomationPeer的早期发现确实不正确,所以我把它写成一个SO问题和自我答案,以防万一它将来会帮助其他人)
答案 0 :(得分:8)
在不同但类似的msdn论坛问题TabControl controls are missing for UI Automation上的MSFT回复中找到答案。
要让UI自动化适用于ContentTemplated TabControl,请将 Name =“PART_SelectedContentHost”属性添加到ContentPresenter,就像这样
<ContentPresenter Name="PART_SelectedContentHost"
Content="{TemplateBinding SelectedContent}"/>
这就是全部。 UISpy现在可以看到当前所选标签的内容。