XAML - 将单元格的行和列索引绑定到自动化 ID

2024-05-09

我正在为 WPF 数据网格中的各个单元格提供自动化 ID,但遇到了一些障碍。我决定尝试根据单元格在网格中的位置(行索引和列索引)来命名单元格。使用 UI 检查器并突出显示有问题的 DataGridCell 之一会显示以下属性:

GridItem.Row: 2 GridItem.Column: 0

...这让我相信我可以通过绑定访问这些属性。然而,过去几天我花了大部分时间在互联网上搜索如何解决这个问题,但没有找到任何东西。

当前的XAML代码如下(“???”是占位符):

<DataGrid.CellStyle>
  <Style TargetType="{x:Type DataGridCell}">
    <Setter Property="AutomationProperties.AutomationId">
      <Setter.Value>
        <MultiBinding StringFormat="cell:{0}-{1}">
          <Binding ??? />
          <Binding ??? />
        </MultiBinding>
      </Setter.Value>
    </Setter> 
  </Style>
</DataGrid.CellStyle>

是否存在通往这些属性的路径?或者是否存在另一种方法可以为各个单元提供唯一的自动化 ID?我对 WPF 和 XAML 不太有经验,因此非常感谢您的指点。

提前致谢。


终于可以工作了。在这里发布解决方案,以便其他人受益。

背后的代码(基于http://gregandora.wordpress.com/2011/01/11/wpf-4-datagrid-getting-the-row-number-into-the-rowheader/ http://gregandora.wordpress.com/2011/01/11/wpf-4-datagrid-getting-the-row-number-into-the-rowheader/):

Private Sub DataGrid_LoadingRow(sender As System.Object, e As System.Windows.Controls.DataGridRowEventArgs)
  e.Row.Tag = (e.Row.GetIndex()).ToString()
End Sub

以及 XAML:

<DataGrid ... LoadingRow="DataGrid_LoadingRow" >

<DataGrid.ItemContainerStyle>
  <Style TargetType="{x:Type DataGridRow}">
    <Setter Property="AutomationProperties.AutomationId">
      <Setter.Value>
        <MultiBinding StringFormat="Row{0}">
          <Binding Path="(DataGridRow.Tag)"
                   RelativeSource="{RelativeSource Mode=Self}" />
        </MultiBinding>
      </Setter.Value>
    </Setter>
    <Setter Property="AutomationProperties.Name">
      <Setter.Value>
        <MultiBinding StringFormat="Row{0}">
          <Binding Path="(DataGridRow.Tag)"
                   RelativeSource="{RelativeSource Mode=Self}" />
        </MultiBinding>
      </Setter.Value>
    </Setter>
  </Style>
</DataGrid.ItemContainerStyle>

...

<DataGrid.CellStyle>
  <Style>
    <Setter Property="AutomationProperties.AutomationId">
      <Setter.Value>
        <MultiBinding StringFormat="cell{0}Col{1}">

          <!-- bind to row automation name (which contains row index) -->
          <Binding Path="(AutomationProperties.Name)"
                   RelativeSource="{RelativeSource AncestorType=DataGridRow}" />

          <!-- bind to column index -->
          <Binding Path="(DataGridCell.TabIndex)"
                   RelativeSource="{RelativeSource Mode=Self}" />

        </MultiBinding>
      </Setter.Value>
    </Setter> 
  </Style>
</DataGrid.CellStyle>

...

</DataGrid>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XAML - 将单元格的行和列索引绑定到自动化 ID 的相关文章

随机推荐

  • 无法从 TemporalAccessor 获取 OffsetDateTime

    当我这样做时 String datum 20130419233512 DateTimeFormatter formatter DateTimeFormatter ofPattern yyyyMMddHHmmss withZone ZoneI
  • 如何在 Google 电子表格中使用 Google 脚本从相邻单元格获取值?

    如果之前有人问过这个问题 我深表歉意 但我已经寻找了一个例子 不幸的是我无法找到答案 因此我为什么在这里问 如果我在 Google 电子表格中有一个自定义函数 如果内容是动态生成的 我如何获取单元格的值 当它是固定值时我可以获取该值 但当它
  • Laravel 5 Eloquent 关系:无法修改/覆盖关系表属性

    我正在使用 Laravel 5belongsToMany使用中间数据透视表定义相关表的方法 我的应用程序正在使用雄辩的模型Tour and 旅游类别 在游览模型中我有 namespace App use Illuminate Databas
  • 谷歌会索引带有隐藏div的页面吗?

    我开始重新设计和开发一个包含大量文本的网站 并且我正在考虑如何组织网站上的信息 使其看起来更干净 在网站的某些部分 我想实现一个 jquery 切换效果 其中某些内容放置在隐藏的 div 中 并且该内容将根据用户的 onclick 事件显示
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 使用绑定数据集中的值设置 Gridview 行背景颜色

    我有一个包含 Column 的 GridViewID 我有一个包含两列的数据表 ID DONE 我正在绑定IDDataTable 中的列到 GridView 直到没有它就好了 但现在我需要根据以下内容设置 GridView 行的背景颜色DO
  • 如何从另一个应用程序向一个应用程序添加视图

    我的应用程序叫做我的好应用 MyNiceApp 主要只是一个加载视图的核心coreView在主活动中onCreate coreView由用户根据需要下载的其他插件的视图填充 我定义了核心视图上的各个区域 这些区域可以通过 MyNiceApp
  • 当我尝试构建 JPQL 连接查询时,为什么会得到无效路径?

    我使用的是 JPA 2 1 Hibernate 4 3 6 Final 和 MySQL 5 5 37 如何编写执行联接的 JPQL 查询 我在下面尝试 final String jpqlQuery SELECT m FROM Message
  • Celery计划任务中的打印语句不会出现在终端中

    当我跑步时celery A tasks2 celery worker B我想看到每秒打印 芹菜任务 目前没有打印任何内容 为什么这不起作用 from app import app from celery import Celery from
  • 准备好的声明不返回任何内容

    我知道这个特定的查询是有效的 因为我用未经准备的过程方法测试了它 这里是 name introduction mysqli new mysqli localhost user pass db or die There was a probl
  • 包含小时、分钟和秒的周期[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个代表年 月 周 日 小时 分钟 秒的间隔数据类型 前三年 年 月 日 可以用Period最后
  • 在函数上使用子例程的目的

    我已经使用 Access 一段时间了 尽管我了解 Function 相对于 Sub 的明显好处是它可以返回值 但我不确定为什么我应该使用 Sub 而不是一个函数 毕竟 除非我弄错了 函数可以做所有 Subs 可以做的事情吗 注意 我完全知道
  • TFS:使用主分支的更改更新分支

    所以 我们有我们的主开发线 我创建一个分支 开发人员 b 创建一个分支 我们俩都做一些工作 开发人员 b 完成他的工作 合并回主开发线 我知道他的更改会影响我 我不想稍后再处理冲突 而是想使用现在主开发行中的更改来更新我的分支 这样我就可以
  • 带有指针数组的 cython

    我在 python 中有一个 numpy ndarrays 列表 具有不同的长度 并且需要非常快速地访问 python 中的列表 我认为指针数组就可以解决问题 我试过 float type t list of arrays no of ar
  • 如何在 cygwin 下配置 Mercurial 以使用 WinMerge 进行合并?

    当 Mercurial 在 cygwin 下运行时 弄清楚如何生成有点棘手WinMerge http winmerge org 来解决合并冲突 我怎样才能做到这一点 诀窍是 cygwin 路径与 Windows 路径不同 因此您需要一个小脚
  • serviceworker 是否可以向 url 请求添加标头

    我有一个网站 我不想让人们创建帐户 它是一个新闻提要 其中每篇新闻文章都进行了分类 我想让人们标记他们感兴趣的类别 以便下次他们访问该网站时 它只显示标记类别的新闻 我将标签保存在 indexedDB 中 据我所知 它可以在服务工作者中使用
  • SWIFT:+[CATransaction Synchronize] 在解码 HTML 实体时在事务中调用

    我正在制作一个获取博客 JSON 内容的应用程序 博客文章的标题显示在 tableView 中 获取的标题是 HTML 编码的 所以我用这段代码解码了它们 func configureCell cell UITableViewCell at
  • 如何顺序运行 golang 测试?

    当我跑步时go test 我的输出 FAIL TestGETSearchSuccess 0 00s Location drivers api test go 283 Error Not equal 200 expected 204 actu
  • Rust 中为什么有 mod 关键字?

    看完之后this https doc rust lang org book crates and modules html 我想知道为什么有一个mod关键字和mod rs 我假设目录层次结构也可以描述模块 必须显式声明模块有几个原因 模块可
  • XAML - 将单元格的行和列索引绑定到自动化 ID

    我正在为 WPF 数据网格中的各个单元格提供自动化 ID 但遇到了一些障碍 我决定尝试根据单元格在网格中的位置 行索引和列索引 来命名单元格 使用 UI 检查器并突出显示有问题的 DataGridCell 之一会显示以下属性 GridIte