繁体   English   中英

在 WPF 网格中为数据项设置自动化 ID,以使用 UI 自动化框架实现自动化

[英]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 为 WPF 网格中的数据项设置自动化 ID
  • 通过代码设置数据项AutomationElement的automationID

我的检查工具的屏幕截图:检查工具

我的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM