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

时间:2015-10-13 16:53:59

标签: c# .net winforms data-binding

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

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

1 个答案:

答案 0 :(得分:5)

  

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

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

  

到什么程度?

它只能绑定到属性(不支持表达式)。要使其工作,提供属性的对象必须支持属性更改通知。标准方法是实现INotifyPropertyChanged接口,但还有其他机制 - IBindingList实现提供ListChanged事件,对象为PropertyNameChanged提供名为PropertyName的事件等。

正如我所提到的,你可以直接绑定属性。但是,在运行时使用一些帮助程序,您可以真正绑定到方法或表达式。我已经提供了在以下线程Button enable and disable on text changed eventExchange UserControls on a Form with data-bindingCustom WinForms data binding with converter not working on nullable type (double?).Net WinForms design to sync Data and Controls中为单个项目数据绑定执行此操作的示例,以及我自己的问题{{3对于更复杂的场景。

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