0

序章

私は 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番目の列ではなく、最初の列の値)。

4

1 に答える 1

2

これを知っているかどうかはわかりませんが、これらのタイプの問題を分析するのに非常に役立つツールはSnoopです。

特に、発生する可能性のあるデータバインディングエラーを(赤で)強調表示します。

私は自分で調べたところ、xamlの最初の部分(上記)が(構文エラーをクリアした後)現在機能しているように見えます。スヌープでは、バインドされたプロパティが薄緑色で強調表示されます。

これは、プロパティが正しく設定されていることを示すSnoopのスクリーンショットです。 スヌープスクリーンショット1

そして、これが最初の列にTextBlock(プロパティが設定されていない...薄緑色の列がない)を示すSnoopのスクリーンショットです。 スヌープスクリーンショット2

そして最後に、バインディングを意図的に壊して、何かが間違っていてデータバインディングエラーが発生したときにSnoopが何を表示するかを示しました(赤で強調表示され、列の1つに追加情報が表示されます)。 スヌープスクリーンショット3

于 2010-06-16T13:52:12.733 に答える