WPF感悟(2)——XAML與C#的語法不對稱

WPF感悟(2)——XAML與C#的語法不對稱

XAML的語法與C#的語法並不是完全對稱的,最明顯的就是在設置Binding的時候。

XAML:

<ListBox Name="listBox1" ItemsSource="{Binding ...}" .../>

如何看待ItemsSource="{Binding ...}這個attribute?如果認爲是

listBox1.ItemsSource = new Binding(...);,那就錯了——數據類型都不匹配。實際上,這句XAML對應的C#應該是:

listBox1.SetBinding(ListBox.ItemsSourceProperty, new Binding(...));

爲了讓Binding更詳細,往往把它拎出來寫,成爲這樣:

Binding b = new Binding("Path");
b.Source = XXXX;
listBox1.SetBinding(ListBox.ItemsSourceProperty, b);

===========================================================

補記一點東西:

特別是對於DataContext這個東西——

something.DataContext = aDataSource;

something.SetBinding(DataContextProperty, aBinding);

是完全不一樣的(當然不一樣!只是工作的時候容易搞混)。前者是設定一個對象的DataContext後,這個DataContext就不變了(是哪個對象就不變了,並不是說這個對象內的內容不變);後者是說這個對象的DataContext藉助一個Binding來改變。

 

 

 

發佈了145 篇原創文章 · 獲贊 37 · 訪問量 99萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章