你能将属性值绑定到C#中的变量/数据吗?

Mr.*_*Boy 0 .net c# data-binding winforms

在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象.例如,button.enabled = {!obj.name.empty}它可以在其他方面进行非常简洁的GUI验证.

我没有在Visual Studio GUI设计器中看到任何这样的工具,但是想知道.Net/C#中是否存在这种功能,如果存在,在多大程度上?

Iva*_*oev 5

我没有在Visual Studio GUI设计器中看到任何此类工具

实际上有.在设计器中选择窗体/控件,然后转到"属性"窗口并展开(DataBindings)类别.您会在那里看到一些属性,如果单击(高级)项,则会有更多属性.

到什么程度?

它只能绑定到一个属性(不支持任何表达式).要使其工作,提供属性的对象必须支持属性更改通知.标准的方式实现INotifyPropertyChanged的接口,但也有其他的机制- IBindingList实施提供ListChanged事件,对象提供事件命名PropertyNameChangedPropertyName等.

正如我所提到的,你可以直接绑定属性.但是,在运行时使用一些帮助程序,您可以真正绑定到方法或表达式.我已经提供了这样做的例子在下面的线程按钮启用和禁用文字改变事件,与数据绑定窗体上的用户控件交流,有不工作的可空类型转换器(双?)定制的WinForms数据绑定, 净WinForms设计用于同步 单个项目数据绑定的数据和控件,以及我自己的问题WPF中的跨表格数据绑定用于更复杂的场景.

与某些WPF-ers所说的相反,绑定到自定义对象/集合时没有WF限制.唯一的限制是绑定到其他控件属性时,因为控件属性通知模式没有严格遵循,就像在WPF中那样设计.