wpf - 从 DataTemplate 中的控件获取 GridViewColumn

标签 wpf listview header datatemplate gridviewcolumn

例子:

<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> 

如果我访问 DataTemplate 中的 TextBlock,我将可以访问有关绑定(bind)路径的信息。 但我不知道如何找到(从 TextBlock 开始)它包含 GridViewColumn(在 GridViewRowPresenter 列列表中)并进行比较它到网格的 GridViewColumn(来自 GridViewHeaderRowPresenter 列列表)以获取标题的名称。

最后我应该有对:xx->XX, yy->YY

我可以使用以下命令在 ListView 中找到所有 TextBlocks 的列表:

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

我可以找到所有 GridViewColumnHeaders 的列表:

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

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

我希望这是可以理解的。

最佳答案

GridViewColumns 是抽象对象,它们从不出现在 UI 的任何地方,您可以尝试使用 ElementName 命名该列并将其绑定(bind)到您需要的控件的标签,或者如果失败了 Source 名称上带有 x:Reference

关于wpf - 从 DataTemplate 中的控件获取 GridViewColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231139/

相关文章:

java - 记住使用搜索过滤器选中了哪个复选框

android - 添加向右滑动删除 ListView 项目

c++ - 解析位图文件时,如何替换WORD和DWORD数据类型?

用简单的术语为 wpf mvvm 编写的 c# 类

c# - 如何为 windows7、wpf 构建自定义 shell?

android - notifyDataSetChanged() - IndexOutOfBoundException

python - 如何使用 Python suds 库创建 SOAP 头?

linux - Grep 使用帮助

c# - CAB 与 Prism 的比较

c# - 使用 WPF 在 3d 中绘制大型数据集?