这是我尝试绑定(bind)到 System.Type.Name 时遇到的异常。
这是我正在做的:
this.propertyTypeBindingSource.DataSource = typeof(System.Type);
/* snip */
this.nameTextBox1.DataBindings.Add(
new System.Windows.Forms.Binding(
"Text",
this.propertyTypeBindingSource,
"Name", true));
绑定(bind)到 System.Type 是否有一些技巧,是不允许的还是有任何解决方法?绑定(bind)到其他类型没有问题。
最佳答案
确实,Type 有特殊处理...这种方法在 IDE 等中用于提前配置元数据。如果您查看 IDE 生成的绑定(bind),它们会执行以下操作:
bindingSource1.DataSource = typeof(MyObject);
说“当我们获得真实数据时,我们期望 MyObject 是实例”;即,当您请求“名称”时,它正在寻找名称属性 在 MyObject 上 - 而不是 Type 实例的名称。这允许网格等获取它们的元数据而无需等待真实数据;但因此您不能“真正”绑定(bind)到 Type。
System.ComponentModel 代码在简单绑定(bind)和列表绑定(bind)(提供或接受货币管理器)之间是相同的,因此简单绑定(bind)也继承了此行为。同样,您不能绑定(bind)到实现 IList/IListSource 的类的属性,因为这是以特殊方式解释的。
您的额外类(class)似乎是一种合理的方法。
关于c# - 无法绑定(bind)到数据源上的属性或列名称。参数名称 : dataMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220392/