在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象。例如button.enabled = {!obj.name.empty}
它可以在其他方面进行非常简洁的GUI验证。
我没有在Visual Studio GUI设计器中看到任何此类工具,但想知道.Net / C#中是否存在此类功能,如果存在,在何种程度上存在?
答案 0 :(得分:5)
我在Visual Studio GUI设计器中看不到任何此类工具
实际上有。在设计器中选择窗体/控件,然后转到“属性”窗口并展开(DataBindings)类别。您会在那里看到一些属性,如果单击(高级)项,则会有更多属性。
到什么程度?
它只能绑定到属性(不支持表达式)。要使其工作,提供属性的对象必须支持属性更改通知。标准方法是实现INotifyPropertyChanged
接口,但还有其他机制 - IBindingList
实现提供ListChanged
事件,对象为PropertyNameChanged
提供名为PropertyName
的事件等。
正如我所提到的,你可以直接绑定属性。但是,在运行时使用一些帮助程序,您可以真正绑定到方法或表达式。我已经提供了在以下线程Button enable and disable on text changed event,Exchange UserControls on a Form with data-binding,Custom WinForms data binding with converter not working on nullable type (double?),.Net WinForms design to sync Data and Controls中为单个项目数据绑定执行此操作的示例,以及我自己的问题{{3对于更复杂的场景。
与某些WPF-ers所说的相反,绑定到自定义对象/集合时没有WF限制。唯一的限制是绑定到其他控件属性时,因为控件属性通知模式没有严格遵循,就像在WPF中那样设计。