如何确定哪个 属性 是数据绑定的默认 属性?
How to determine which property is the default property for databinding?
鉴于 X 的 Class 具有多个可绑定的属性,我如何通过反射确定哪个应该是默认的 属性 到 select?
在 Winforms 设计器中,您可以 select 数据绑定。 Visual Studio 如何确定 "EditValue" 应该是要绑定的默认 属性 而不是说 "Text"?
我已经知道如何从对象中获取特性和属性,但我缺少一些可以告诉我默认使用哪一个的信息。
您可以依赖 class 的 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")]
.
鉴于 X 的 Class 具有多个可绑定的属性,我如何通过反射确定哪个应该是默认的 属性 到 select?
在 Winforms 设计器中,您可以 select 数据绑定。 Visual Studio 如何确定 "EditValue" 应该是要绑定的默认 属性 而不是说 "Text"?
我已经知道如何从对象中获取特性和属性,但我缺少一些可以告诉我默认使用哪一个的信息。
您可以依赖 class 的 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")]
.