如何确定哪个属性是数据绑定的默认属性?

问题描述 投票:0回答:1

给定具有多个可绑定属性的X类,我如何确定哪个属性应该是通过反射选择的默认属性?

在Winforms设计器中,您可以选择数据绑定。 Visual Studio如何确定“ EditValue”应为要绑定的默认属性,而不是说“ Text”?]

enter image description here

我已经知道如何从对象中获取属性和属性,但是我缺少一些可以告诉我默认使用哪个属性的东西。

c# .net winforms reflection windows-forms-designer
1个回答
1
投票

您可以依靠该类的DefaultBindingProperty属性。

例如,DefaultBindingPropertyDateTimePicker修饰,但[DefaultBindingProperty("Value")]ComboBox修饰。

您可以创建如下所示的函数,以获取控件的默认绑定属性的名称:

[DefaultBindingProperty("Text")]

旁注

对于某些复杂的情况,您可能也对这些属性感兴趣:

  • public string GetDefaultBindingPropertyValue(Control c) { var att = c.GetType().GetCustomAttributes(true) .OfType<DefaultBindingProperty>().FirstOrDefault(); return att?.Name; } :指定支持基于查找的绑定的属性。这个类不能被继承。 LookupBindingPropertiesLookupBindingProperties之类的列表控件由ComboBox这个属性修饰。

  • ListBox:指定支持复杂数据绑定的组件的数据源和数据成员属性。这个类不能被继承。 [LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "SelectedValue")]已通过此属性ComplexBindingProperties装饰。

© www.soinside.com 2019 - 2024. All rights reserved.