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列列表中)并将其与网格GridViewColumn(从GridViewHeaderRowPresenter列列表)进行比较以获取标题的名称。

最后我应该有对: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();

而且我找不到TextBlocksGridViewColumns...之间的联系

我希望这是可以理解的。

4

1 回答 1

0

GridViewColumns 是抽象对象,它们永远不会出现在 UI 中的任何位置,您可以尝试命名列并将其绑定到您需要使用它的控件的标记,ElementName或者如果名称上的Sourcewith失败x:Reference

于 2011-11-22T17:38:55.963 回答