给出具有多个可绑定属性的X类,我如何确定哪个属性应该是通过反射选择的默认属性?
在Winforms设计器中,可以选择“数据绑定”。 Visual Studio如何确定“ Editvalue”应为要绑定的默认属性,而不是说“ Text”?
我已经知道如何从对象中获取属性和属性,但是我错过了一些告诉我默认使用哪个属性的东西。
您可以依赖类的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
:指定支持基于查找的绑定的属性。像ComboBox
和ListBox
这样的列表控件都由[LookupBindingProperties("DataSource","DisplayMember","ValueMember","SelectedValue")]
这个属性修饰。
ComplexBindingProperties
:为支持复杂数据绑定的组件指定数据源和数据成员属性。 DataGridView
已为此属性[ComplexBindingProperties("DataSource","DataMember")]
装饰。