代码之家  ›  专栏  ›  技术社区  ›  Lernkurve

如何只对ListView的第二列设置属性?

  •  0
  • Lernkurve  · 技术社区  · 14 年前

    介绍

    我有一个列表视图,只想格式化第二列。以下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属性。我正在用编码的UI测试生成器检查它,属性为空。文本和前台属性设置正确。

    问题

    有人知道为什么没有设置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测试代码返回错误的值(第一列的值,而不是我想要的第二列的值)。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    8 年前

    不知道您是否知道这一点,但在分析这些类型的问题时,一个非常有用的工具是 snoop

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

    我自己看了一眼,似乎第一块XAML(上面)正在工作(在您清除语法错误之后)。在snoop中,绑定属性以浅绿色突出显示。

    以下是snoop的屏幕截图,显示属性设置正确:

    这里是snoop的屏幕截图,显示了textBlock(属性未设置的地方…第一列无浅绿色列):

    最后,我故意破坏绑定,向您展示当出现错误并且您有数据绑定错误时,snoop显示的内容(它以红色突出显示,其中一列提供了其他信息):

    Snoop .

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

    我自己看了一眼,似乎第一块XAML(上面)正在工作(在您清除语法错误之后)。在snoop中,绑定属性以浅绿色突出显示。

    以下是snoop的屏幕截图,显示属性设置正确: Snoop Screen Shot 1

    这里是snoop的屏幕截图,显示了textBlock(属性未设置的地方…第一列无浅绿色列): Snoop Screen Shot 2

    最后,我故意破坏绑定,向您展示当出现错误并且您有数据绑定错误时,snoop显示的内容(它以红色突出显示,其中一列提供了其他信息): Snoop Screen Shot 3