序章
私は ListView を持っていて、2 番目の列だけを書式設定したいと考えています。次の 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>
私が抱えている 1 つの問題は、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テストコードが間違った値を返すため、2番目の列にのみ必要です(必要な2番目の列ではなく、最初の列の値)。