2011-12-08 29 views
1

用C#編寫的Metro應用程序的默認「拆分視圖」模板利用ListView標記中的ItemTemplate屬性。我剛剛開始使用XAML和C#,所以它仍然有點令人難以置信。在Metro UI中使用XAML ItemTemplates

我明白ItemsSource被用來提供數據收集的觀點,但我有點困惑,在ListView如何知道從這些模型類顯示。這是由ItemTemlate定義的嗎?有一個代碼片段:

...ItemTemplate="{StaticResource SnapListItemTemplate}" ItemContainerStyle="{StaticResource SnapListTileStyle}" ItemsPanel="{StaticResource SnapListItemsPanelTemplate}"... 

我真的不明白該行的。這些SnapList*選項在哪裏定義?是否提供了可用模板的列表,還是這些都是在某處定義了我的項目? SnapListItemTemplate是否在尋找一組特定的ivars來顯示?這個模板可以被修改或「分類」嗎?

例如,有對模型類的一些屬性像titlesubtitle等。而且我很好奇,到ListView如何知道拔出的具體數值,並且也知道如何打好他們出。如果我想將 ivar的名稱更改爲subtext,該怎麼辦?項目模板如何更新?

+0

您是如何創建項目的?您是否正在使用標準項目模板之一? –

+0

是的,我使用Visual C#,Windows Metro風格,拆分應用程序。 (或者網格應用程序,它們都非常相似,這個問題同樣適用於兩者。) –

回答

3

SnapList*模板應該在您的項目中定義。

綁定是{StaticResource ...}這意味着模板/樣式或任何通常在某些XAML文件中定義的。

如果你搜索項目(按Ctrl ++˚F)他們應該打開了名稱,可能是在一個名爲Styles.xaml

+0

哇,我簡直不敢相信我錯過了。它們都是在我的一個根XAML文件中定義的。 (App.xaml,適用於那些使用模板項目的人)。現在事情開始變得更有意義了。謝謝! (我可以在20小時內獎勵賞金,所以你必須坐下來。)與此同時,是否必須定義StaticResource(即它是否明確表示App.xaml),還是它意味着「在一個我項目中的XAML文件「? –

+0

@craig - 它不一定是'App.xaml',但您需要確保它所在的資源字典可以被您使用它的代碼看到。 – ChrisF

+0

@Craig靜態資源遍歷元素樹,尋找鍵值的匹配。在你的情況下,框架首先查找ListView中的SnapListItemTemplate鍵,然後它是父對象等,直到它到達根元素。然後它在App.xaml中查找。找到的第一個匹配是使用的資源。在你的情況下,比賽是在app.xaml –

相關問題