c# - 我可以在 C#/WPF 中获取绑定(bind)对象的 Type() 吗(即使绑定(bind)值为 null)?

标签 c# wpf reflection binding eval

我有一个未知来源的绑定(bind)。我所拥有的只是绑定(bind)。我没有其他方式查看绑定(bind)对象。我需要找出绑定(bind)对象的类型,即使值为 null(这是我的问题所在)。

我通过绑定(bind)到一个对象然后使用该对象作为获取类型的方式来评估绑定(bind),但我需要知道类型,即使值为 null。

例如,我有这样一个类:

public class Customer{
  public string Name { get; set; }
  public int Age { get; set; }
}

现在,如果我有一个 WPF 控件绑定(bind)到任何这些属性(假设它们是依赖属性),我想获取属性的类型,即使值为 null。

因此,我有一个自定义控件,它现在有一个表示 {Binding Name} 的 Binding 对象。如何使用 C# 获取“绑定(bind)对象”的类型?

最佳答案

您是否愿意使用反射来访问非公共(public)成员?如果是这样,我认为Binding有一个名为 CreateBindingExpression 的内部方法返回 BindingExpression ,它有一个名为 _listener 的私有(private)成员内部类型 PropertyPathListener .它有一个名为 LeafType 的内部属性,我相信这就是您要找的。

它很困惑,需要信任,并且在未来版本的框架中可能会失败,但它可能是获得所需内容的唯一方法。

关于c# - 我可以在 C#/WPF 中获取绑定(bind)对象的 Type() 吗(即使绑定(bind)值为 null)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548596/

相关文章:

c# - 你能让 Asp.net MVC View wireup 编译时安全吗?

c# - 将光标设置为网格中的指针

C#小数点分隔符?

c# - 我将如何撤消此代码?

自定义文本框的 WPF 验证错误模板

wpf - 在 WPF 应用程序中调试 Silverlight

wpf - WPF中通过Uid获取对象

java - 单例:如何停止通过反射创建实例

reflection - 如何动态测试 Self 类型和不相关的类型

c# - 确定派生自哪个泛型类型对象