2010-10-06 229 views
31

我試圖通過解開一個坦然的噩夢般的項目來學習WPF,這個項目是在我之前從事這項工作的人寫的。對不起,如果我的一些問題是相當多的家庭作業級別,但我試圖找出現有的XAML做了什麼,對背後的概念瞭解不足......'ItemsSource =「{Binding}」'是什麼意思?

無論如何,我有一個ListView與此其定義的一部分:

<ListView 
    DataContext="{StaticResource XMLFileGroups}" 
    ItemContainerStyle="{StaticResource XMLItemStyle}" 
    ItemsSource="{Binding}"> 

現在,我可以種讓我的頭周圍什麼「的DataContext」和「ItemContainerStyle」行正在做;它們似乎引用了一個對現有列表進行排序的方法,以及分別定義了ListView的一些可視行爲的結構。

什麼是我的事情是ItemsSource被列爲「{綁定}」。所有對我說的是,有一些數據綁定到位,但我不明白這條線可能是有意義的,但刪除它會阻止顯示任何數據。

有人可以揭示這裏發生的事情,或者我應該在哪裏尋找實際的綁定定義?我只是不明白我所看到的,在這裏。

回答

30

沒有路徑,{Binding}將綁定到DataContext本身。
添加路徑將綁定到datacontext的屬性。

+0

因此「{Binding}」特別鏈接回由ListView的DataContext屬性創建的集合?這是通常發生在View類型的對象還是特定於ListView的東西?抱歉請求獲取更多信息,但我確定您可以理解,搜索'ItemsSource =「{Binding}」'並不足以讓我獲得許多結果,因此我在第一個問題中提出了這個問題放置... – Frosty840 2010-10-06 15:43:47

+0

我不確定你在問什麼。 '{Binding}'可以用於任何需要綁定的值爲'DataContext'本身的上下文。它最常用於綁定數據源。 – SLaks 2010-10-06 15:49:43

+0

我以爲是這樣,但我無法確定。感謝您的澄清。 – Frosty840 2010-10-06 15:55:35

6

該示例指定綁定的DataContext。在代碼同樣的事情背後是

MyList.ItemsSource = new Binding(); 

你也可以做的東西,如:

ItemsSource="{Binding YourBindingField, Source={StaticResource YourStaticDataSource}}" 

這將轉化爲這個在後面的代碼:

 MyList.ItemsSource = new Binding() {ElementName = "YourBindingField", Source = YourStaticDataSource}; 

希望幫助

+1

對不起,我沒有提到我正在從事的是(理論上)一個MVVM項目,所以沒有任何代碼隱藏。雖然我確定你說的是正確的,但我沒有任何解釋它的背景。 – Frosty840 2010-10-06 15:50:32