2015-10-13 69 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中那樣嚴格按照設計進行。

相關問題