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

https://stackoverflow.com/questions/8231139/

相关文章:

ruby-on-rails - Rails - I18n - 如何本地化 f.collection_

continuous-integration - 自动构建 Access 2007 数据库

html-agility-pack - html 敏捷包和文本中的三角括号

drupal - 在 drupal 7 中将表单元素添加到节点以供用户输入

Ruby Gem 安装失败 - 执行 gem 时出错 - 未初始化的常量 Syck::Syck

ruby-on-rails-3 - 无法修改关联,因为源反射类通过 :has_many + rail

iphone - 使用场景转换动画化 UIKit 项目

sql-server - 'Insert into linked table failed, RAI

macos - Mac 上的实时动态壁纸(桌面)

django - 如何更改方法 is_valid() 中的表单字段