[英]Setting automationIDs for dataitems in a WPF Grid for automation with UI Automation Framework
我有一个使用 .NET 框架 3.5 以 C# 编写的应用程序,并希望使用 Microsoft UI 自动化框架自动化 UI。 我不能在这里展示所有东西,因为它是我公司的软件。
在这个应用程序中,我正在生成一个显示我的数据项的网格。
我尝试通过 XAML 为网格中的每个数据项设置自动化 ID,但问题是,我看不到那里的数据项。 它们是在我的应用程序运行时动态生成的。 在 XAML 中仅定义了包含数据项的网格。 我将在下面发布我的 XAML 的片段。
我也尝试通过程序代码设置自动化ID,但我只设法获取每个数据项的AutomationElement。 我被困住了。 我不知道如何为那里的每个 AutomationElement 设置自动化 ID。
总而言之,我正在寻找:
我的检查工具的屏幕截图:检查工具
我的 XAML 代码片段:
<ListView IsEnabled="{Binding TestSelectorEnabled}" x:Name="ListView1" ItemsSource="{Binding TestsViewModel.TestsDataTable}" SelectedValue="{Binding TestsViewModel.SelectedTest}" SelectedValuePath="TestName" Height="180" View="{Binding TestsViewModel.GridView}" TabIndex="0" MinWidth="1" Focusable="False"/>
<Grid Visibility="Collapsed" IsSharedSizeScope="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="40"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
</Grid>
尝试明确指定ItemTemplate ,它会让你设置 id。 它应该是一个自动化 API 来迭代 ListView 子项。
谢谢@Viktor Syromiatnikov,这让我走上了正轨。 我现在设法为每个 ListViewItem 设置了 static automationId。
有谁知道我如何为每个 ListViewItem 动态设置自动化 ID,以便每个新 ListViewItem 看起来像 dataitem1、dataitem2、dataitem3?
我的 XAML 现在看起来像这样:
<ListView IsEnabled="{Binding TestSelectorEnabled}" x:Name="ListView1" ItemsSource="{Binding TestsViewModel.TestsDataTable}" SelectedValue="{Binding TestsViewModel.SelectedTest}" SelectedValuePath="TestName" Height="180" View="{Binding TestsViewModel.GridView}" TabIndex="0" MinWidth="1" Focusable="False">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="AutomationProperties.AutomationId" Value="dataitem"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.