3

我需要使用反射来获取控件中的绑定值DataGridTemplateColumn(例如HyperLinkButton)。有谁知道我该怎么做?

使用 a 执行此操作似乎很简单,TextBlock因为它具有TextProperty依赖项属性,但我似乎无法从没有立即数的控件中获取绑定表达式TextProperty。这是我用来获取 a 的绑定表达式的代码TextBlock

FrameworkElement fe = (FrameworkElement)dependencyObj;
FieldInfo fi = fe.GetType().GetField("TextProperty");
BindingExpression bindingExpression = fe.GetBindingExpression((DependencyProperty)fi.GetValue(null))

但是,以下代码永远不会适用于 a 的依赖对象HyperLinkButton

FieldInfo fi = fe.GetType().GetField("ContentProperty");

有谁知道我如何能够获得BindingExpressiona 内容的(和绑定值)HyperLinkButton

4

1 回答 1

2

您是否尝试为该字段添加正确的绑定标志?这听起来像是使用反射时绑定标志不合适的情况。TextBlock 在 TextBlock 上有一个 Text 静态字段,其中 HyperlinkBut​​ton 具有从 ContentControl 继承的 Content。

尝试使用 Static & Public & FlattenedHierarchy 绑定标志:

FieldInfo fi = fe.GetType().GetField("ContentProperty", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

添加 FlattenHierarchy 反射绑定标志应该告诉反射在类层次结构中查找该公共静态字段。

于 2010-03-22T22:44:22.093 回答