一般我們在撰寫Windows phone App 或 Windows Store App 時,會使用到DataTemplate來幫助ListBox或其他控制向使用,但是在Xaml中我們可以很快速地讓ListBox存取DataTemplate,那在程式碼中呢?!這個就比較少人知道了,若想要ListBox使用的DataTemplate改變時,我們可以在Xaml中定義多個DataTemplate,並使用程式碼去控制ListBox改變DataTemplate。
本篇文章將引導您在程式碼中存取Xaml中的DataTemplate使用。
一般我們在撰寫Windows phone App 或 Windows Store App 時,會使用到DataTemplate來幫助ListBox或其他控制向使用,但是在Xaml中我們可以很快速地讓ListBox存取DataTemplate,那在程式碼中呢?!這個就比較少人知道了,若想要ListBox使用的DataTemplate改變時,我們可以在Xaml中定義多個DataTemplate,並使用程式碼去控制ListBox改變DataTemplate。
本篇文章將引導您在程式碼中存取Xaml中的DataTemplate使用。
本篇文章將以ListBox做範例,在C#程式碼中套用Xaml中定義的DataTemplate。
一般我們在撰寫Xaml時,會很直覺的將DataTemplate放在ListBox底下。
Xaml :
1: <ListBox>
2: <ListBox.ItemTemplate>
3: <DataTemplate>
4: <Grid>
5: .....
6: </Grid>
7: </DataTemplate>
8: </ListBox.ItemTemplate>
9: </ListBox>
除此之外我們也可以將DataTemplate放在<phone:PhoneApplicationPage.Resources>中,並將ListBox的ItemTemplate屬性指項在Resources所定義的x:key。
Xaml :
1: <phone:PhoneApplicationPage.Resources>
2: <DataTemplate x:Key="DataTemplate1">
3: <Grid>
4: .....
5: </Grid>
6: </DataTemplate>
7: </phone:PhoneApplicationPage.Resources>
8:
9: <Grid x:Name="LayoutRoot" Background="Transparent">
10: <ListBox ItemTemplate="{StaticResource DataTemplate1}"/>
11: </Grid>
以上都是常用的方式,但您有試過讓C#存取Xaml中<phone:PhoneApplicationPage.Resources>底下的DataTemplate嗎?!
這可以讓ListBox更活用,我們可以臨時改變ListBox的DataTemplate,讓它馬上換成其他的樣式。
Xaml:
1: <phone:PhoneApplicationPage.Resources>
2: <DataTemplate x:Key="DataTemplate1">
3: ......
4: </DataTemplate>
5: </phone:PhoneApplicationPage.Resources>
6:
7: <Grid x:Name="LayoutRoot" Background="Transparent">
8: <ListBox x:Name="MyListBox" />
9: </Grid>
C# :
1: DataTemplate DataTemplate1;
2: DataTemplate1= Resources["DataTemplate1"] as DataTemplate;
3: MyListBox.ItemTemplate=DataTemplate1;
如此一來我們便可以在C#中操控ListBox的DataTemplate囉,也可以在C#中存取Xaml中所定義的Resources資源。
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。