2015-10-13 67 views
0

在Flex(AS3)中,您可以将属性绑定到表达式/变量/对象。例如button.enabled = {!obj.name.empty}它使GUI验证非常整洁。您可以将属性值绑定到C#中的变量/数据吗?

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

+1

在什么情况下你在说什么? XAML(WPF和Silverlight)开发人员可能用于双向数据绑定... – mason

+0

可能是标准C#Winforms应用程序 –

+0

是的,它涉及['PropertyManager'](https://msdn.microsoft.com/en-us/ library/system.windows.forms.propertymanager(v = vs.110).aspx)并实现['INotifyPropertyChanged'](https://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged( v = vs.110).aspx)接口。 (它不能做到一个*变量*在c#中没有任何意义) –

回答

5

我没有看到在Visual Studio中的GUI设计任何这类设施

其实是有的。在设计器中选择表单/控件,然后转到属性窗口并展开(DataBindings)类别。你会在那里看到一些属性,如果你点击(高级)项目,就会看到更多的属性。

到什么程度?

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

正如我所说,standartly你可以只绑定到属性。但是,在运行时使用一些帮助程序,您可以真正绑定到方法或表达式。我已经在以下线程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单个项目数据绑定以及我自己的问题Cross tabular data binding in WPF提供了更多复杂场景的例子。

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

相关问题