Ui automation 什么决定了通用XAML控件的哪一部分可以通过UIAutomation访问

Ui automation 什么决定了通用XAML控件的哪一部分可以通过UIAutomation访问,ui-automation,uwp-xaml,controltemplate,microsoft-ui-automation,winappdriver,Ui Automation,Uwp Xaml,Controltemplate,Microsoft Ui Automation,Winappdriver,我正试图通过UWP应用程序的WinAppDriver自动化UI测试。文档中说,通过inspect.exe(即UIAutomation)可见的任何内容都可以通过WinAppDriver进行控制。这意味着可以通过UIAutomation访问基本控件。有时甚至这些控件中的内容也可以通过UI自动化进行访问。例如文本块的标题或切换开关,或组合框的弹出窗口 受此鼓舞,我修改了常用控件的ControlTemplate,使控件的某些元素通过UIAutomation可见。请参见的示例(默认的控制模板不公开切换开关

我正试图通过UWP应用程序的
WinAppDriver
自动化UI测试。文档中说,通过
inspect.exe
(即
UIAutomation
)可见的任何内容都可以通过
WinAppDriver
进行控制。这意味着可以通过UIAutomation访问基本控件。有时甚至这些控件中的内容也可以通过UI自动化进行访问。例如
文本块的标题
切换开关
,或
组合框的弹出窗口

受此鼓舞,我修改了常用控件的
ControlTemplate
,使控件的某些元素通过UIAutomation可见。请参见的示例(默认的
控制模板
不公开
切换开关
OnContent
OffContent
属性,因为它标记为
AutomationProperties.AutomationView=“Raw”

但是,当我想要获取
组合框的标题时,我无法通过
UIAutomation
访问它

<ComboBox x:Name="Box">
    <ComboBox.Header>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="This is a combobox" x:Name="Block" AutomationProperties.Name="TextBlock1" />
            <FontIcon VerticalAlignment="Top"
                      AutomationProperties.AutomationId="Error"
                      FontFamily="Segoe MDL2 Assets"
                      Margin="2 0"
                      Glyph="&#xEB90;"
                      x:Name="FontIcon"
                      Foreground="DarkRed"/>
        </StackPanel>
    </ComboBox.Header>
    <ComboBoxItem>Green</ComboBoxItem>
    <ComboBoxItem>Red</ComboBoxItem>
</ComboBox>

绿色
红色
ControlTemplate
看起来与其他控件类似,如
ToggleSwitch
TextBox
,但无论出于何种原因,
UIAutomation
无法访问
ControlTemplate
中定义的任何内容,除了
ComboBox
的id和弹出列表。所以我的问题是,是什么让某些UI控件公开了它们的内容(比如
标题
),而其他一些控件则没有