Введение
У меня есть 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 устанавливается для всех столбцов. Но я хочу его только для второго, потому что в противном случае мой код теста закодированного пользовательского интерфейса возвращает неправильное значение (значение первого столбца вместо значения второго столбца, который я хочу).