介绍
我有一个 ListView 并且只想格式化第二列。以下 XAML 代码执行此操作:
<ListView x:Name="listview">
<ListView.View>
<GridView>
<GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=Key}" Width="100"/>
<!-- <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}" Width="250">-->
<GridViewColumn Header="Value" Width="250">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Value}" Foreground="CornflowerBlue" AutomationProperties.Name="{Binding Path=Key}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
我遇到的一个问题是未设置 AutomationProperties.Name 属性。我正在使用 Coded UI Test Builder 检查它,并且该属性为空。Text 和 Foreground 属性设置正确。
问题
有谁知道为什么没有设置 AutomationProperties.Name ?
附加信息
奇怪的是,以下 XAML 代码确实设置了 AutomationProperties.Name
<ListView x:Name="listview">
<ListView.Resources>
<Style TargetType="TextBlock">
<Setter Property="AutomationProperties.Name" Value="{Binding Key}"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=Key}" Width="100"/>
<GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}" Width="250"/>
</GridView>
</ListView.View>
</ListView>
但这里的问题是所有列上都设置了 AutomationProperties.Name。但我只希望在第二个上使用它,否则我的编码 UI 测试代码会返回错误的值(第一列的值,而不是我想要的第二列的值)。