2010-06-16 26 views
0

介绍如何仅在ListView的第二列上设置属性?

我有一个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测试代码返回错误的值(第一列,而不是第二列,我想要的)。

+0

在您的第一个XAML中,语法不正确:'AutomationProperties.Name = {Binding Path =“Key”}'应该是'AutomationProperties.Name =“{Binding Path = Key}”' – 2010-06-16 12:15:53

+0

@Thomas Levesque:谢谢,我纠正了它。我重新运行这个问题。您指出的XAML错误不是它的来源。 – Lernkurve 2010-06-16 12:38:05

+0

您是否在输出窗口中看到任何绑定错误? – 2010-06-16 13:42:07

回答

2

不知道你是否意识到这一点,但分析这些类型的问题非常有用的工具是Snoop

特别是,它会突出显示(带红色)您可能遇到的任何数据绑定错误。

我看了一下自己,看起来好像第一块xaml(上面)现在正在工作(清除语法错误后)。在Snoop中,绑定属性以浅绿色突出显示。

这是史努比的屏幕截图显示的属性被设置正确: Snoop Screen Shot 1

这里是史努比的屏幕截图显示的TextBlock(其中属性设置......不浅绿色第一列列): Snoop Screen Shot 2

最后,我故意打破了绑定告诉你什么是史努比说明什么是错的,你有一个数据绑定错误(它以红色突出显示,并之一列给你提供额外的信息): Snoop Screen Shot 3

+0

+1,如果可以的话,会更高。非常感谢您花时间尝试一下,发布真棒截图!你是对的,Snoop确实表明该属性已设置,但是Coded UI Test Builder不是。顺便说一句,非常感谢Snoop 64bit。 – Lernkurve 2010-06-16 15:50:53

+0

+1为Snoop,我不能没有它... – 2010-06-16 18:19:32

+0

@Thomas Levesque,@Lernkurve:你们太仁慈了!谢谢! – cplotts 2010-06-16 18:56:33

相关问题