给定具有多个可绑定属性的X类,我如何确定哪个属性应该是通过反射选择的默认属性?
在Winforms设计器中,您可以选择数据绑定。 Visual Studio如何确定“ EditValue”应为要绑定的默认属性,而不是说“ Text”?]
我已经知道如何从对象中获取属性和属性,但是我缺少一些可以告诉我默认使用哪个属性的东西。
您可以依靠该类的DefaultBindingProperty
属性。
例如,DefaultBindingProperty
用DateTimePicker
修饰,但[DefaultBindingProperty("Value")]
用ComboBox
修饰。
您可以创建如下所示的函数,以获取控件的默认绑定属性的名称:
[DefaultBindingProperty("Text")]
旁注
对于某些复杂的情况,您可能也对这些属性感兴趣:
public string GetDefaultBindingPropertyValue(Control c)
{
var att = c.GetType().GetCustomAttributes(true)
.OfType<DefaultBindingProperty>().FirstOrDefault();
return att?.Name;
}
:指定支持基于查找的绑定的属性。这个类不能被继承。 LookupBindingProperties
和LookupBindingProperties
之类的列表控件由ComboBox
这个属性修饰。
ListBox
:指定支持复杂数据绑定的组件的数据源和数据成员属性。这个类不能被继承。 [LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "SelectedValue")]
已通过此属性ComplexBindingProperties
装饰。