我有一个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检查它,并且该属性为空。文本和前景属性设置正确。
问题
有谁知道为什么没有被设置AutomationProperties.Name?
信息
Strangly不够,下面的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测试代码返回错误的值(第一列,而不是第二列,我想要的)。
在您的第一个XAML中,语法不正确:'AutomationProperties.Name = {Binding Path =“Key”}'应该是'AutomationProperties.Name =“{Binding Path = Key}”' – 2010-06-16 12:15:53
@Thomas Levesque:谢谢,我纠正了它。我重新运行这个问题。您指出的XAML错误不是它的来源。 – Lernkurve 2010-06-16 12:38:05
您是否在输出窗口中看到任何绑定错误? – 2010-06-16 13:42:07