首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用反射来获取Silverlight中具有ContentProperty的控件的BindingExpression (和值)

如何使用反射来获取Silverlight中具有ContentProperty的控件的BindingExpression (和值)
EN

Stack Overflow用户
提问于 2010-03-23 06:31:01
回答 1查看 2.2K关注 0票数 3

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

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

代码语言:javascript
复制
FrameworkElement fe = (FrameworkElement)dependencyObj;
FieldInfo fi = fe.GetType().GetField("TextProperty");
BindingExpression bindingExpression = fe.GetBindingExpression((DependencyProperty)fi.GetValue(null))

但是,对于作为HyperLinkButton的依赖项对象,以下代码永远不起作用

代码语言:javascript
复制
FieldInfo fi = fe.GetType().GetField("ContentProperty");

谁知道我怎样才能获得HyperLinkButton内容的BindingExpression (和绑定值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-23 06:44:22

您是否尝试过为该字段添加正确的绑定标志?这听起来像是使用反射时的inadaquate绑定标志的情况。TextBlock在TextBlock上有一个文本静态字段,其中as HyperlinkButton具有从ContentControl继承的内容。

尝试使用静态、公共和FlattenedHierarchy绑定标志:

代码语言:javascript
复制
FieldInfo fi = fe.GetType().GetField("ContentProperty", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2496238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档