3

例:

<ListView Name="lvAnyList" ItemsSource="{Binding}">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="xx" DisplayMemberBinding="{Binding XX}" CellTemplate="{DynamicResource MyDataTemplate}"/>
      <GridViewColumn Header="yy">
        <GridViewColumn.CellTemplate>
          <DataTemplate>
            <TextBlock Text="{Binding YY}" />
          </DataTemplate>
        </GridViewColumn.CellTemplate>
      </GridViewColumn>
    </GridView>
  </ListView.View>
</ListView> 

TextBlock内部にアクセスDataTemplateすると、バインドされたパスに関する情報にアクセスできます。しかし、ヘッダーの名前を取得するために、TextBlockそれを含むGridViewColumnもの (列リストにある) を (から始めて) グリッドのもの(列リストからGridViewRowPresenter) と比較する方法がわかりません。GridViewColumnGridViewHeaderRowPresenter

最後に、xx->XX、yy->YY のペアが必要です。

TextBlocksこれを使用して、内部のすべてのリストを見つけることができますListView

GridViewRowPresenter gvrp = ControlAux.GetVisualDescendants<GridViewRowPresenter>(element).FirstOrDefault();
IEnumerable<TextBlock> entb = GetVisualDescendants<TextBlock>(gvrp);

すべてのリストを見つけることができますGridViewColumnHeaders

GridViewHeaderRowPresenter gvhrp = ControlAux.GetVisualDescendants<GridViewHeaderRowPresenter>(element).FirstOrDefault();

TextBlocksそして、と の間の接続を見つけることができませんGridViewColumns...

これが理解できることを願っています。

4

1 に答える 1

0

GridViewColumnsは抽象オブジェクトであり、UIのどこにも表示されません。列に名前を付けて、必要な場所でコントロールのタグにバインドするか、名前にwithElementNameが失敗した場合にバインドすることができます。Sourcex:Reference

于 2011-11-22T17:38:55.963 に答える