gpt4 book ai didi

WPF 数据网格 : How to get binding expression of a cell?

转载 作者:行者123 更新时间:2023-12-03 03:58:02 24 4
gpt4 key购买 nike

我需要访问 DataGridTextColumn 中 DataGrid 单元格的绑定(bind)表达式。例如:

        <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>

我设法获取与单元格关联的 TextBlock:

        var cell = dataGrid.GetCellCtrl<TextBlock>(dataGrid.CurrentCell);

细胞似乎是正确的。我可以打电话

        cell.SetValue(TextBlock.TextProperty, value);

更新单元格文本。它似乎正在网格上工作(数量已更新)。然而,正如我在一段时间后意识到的那样,源代码没有得到更新。即使我将 UpdateSourceTrigger 转换为 PropertyChange 也没有帮助。然后,我想我需要获取绑定(bind)表达式并显式调用 UpdateSource。

        var bindingExpr = cell.GetBindingExpression(TextBlock.TextProperty);

但绑定(bind)Expr 始终为空。为什么?

编辑:我最初遇到的问题是我可以访问单元格的绑定(bind) TextBlock,并设置 TextBlock.TextProperty。但是,源没有更新。这就是我正在尝试解决这个问题的方法。

最佳答案

DataGridTextColumn 中的 TextBox 不会有绑定(bind)表达式,而列本身具有绑定(bind)。

DataGridTextColumn 派生自 DataGridBoundColumn,它使用 BindingBase 属性而不是 TextBlock.TextProperty,但是 Binding 属性不是 DependancyProperty,因此您必须使用普通的公共(public)属性进行访问。

因此,您必须进行一些转换,因为 DataGridTextColumn 中的 Binding 属性是 BindingBase 类型。

这样的东西应该可以工作(未经测试)

var binding = (yourGrid.Columns[0] as DataGridBoundColumn).Binding as Binding;

关于WPF 数据网格 : How to get binding expression of a cell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15216362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com