在本文中我們將講述初步使用GridView以展示各種信息。
首先我們看看GridView的重要屬性:
SelectionMode:設置選擇模式(None,Single,Multiple)
IsItemClickEnabled:是否允許有 選擇項點擊事件
ItemsSource:數據項的數據源
ItemTemplate:數據項的展示模板
SelectedItem:選擇項的內容
然後我們看看如何使用GridView.
1.首先設置數據源實體 類以及數據源提供源。
public class DataModel { public string txtTitle { get; set; } public string txtContent { get; set; } public string ImageUrl { get; set; } } public class DataGroupModel { public string GroupTitle { get; set; } public ObservableCollection<DataModel> ItemContent { get; set; } } public class ViewModelData { public ViewModelData() { Sourcedata = GetDataGroup(); } private ObservableCollection<DataGroupModel> _Sourcedata; public ObservableCollection<DataGroupModel> Sourcedata { get { return _Sourcedata; } set { _Sourcedata = value; } } public ObservableCollection<DataGroupModel> GetDataGroup() { return new ObservableCollection<DataGroupModel>(){ new DataGroupModel(){ GroupTitle="玄幻小說", ItemContent=new ObservableCollection<DataModel>(){ new DataModel(){ txtTitle="盤龍",txtContent="大小的血睛鬃毛獅,力大無窮 的紫睛金毛猿,毀天滅地的九頭蛇皇,攜帶著毀滅雷電的恐怖雷龍……這裡無奇不有,這是一個廣博的魔幻世 界。", ImageUrl="http://image.qidian.com/books/1017141/1017141.jpg" }, new DataModel(){ txtTitle="縱橫輪回",txtContent="李沐然,本為身懷諸子百 家所長的大神通者,在收取世間最後一顆神雷珠之時和神雷珠一道重生異世。 神雷之力,刑罰天下", ImageUrl="http://image.qidian.com/books/1.jpg" }, new DataModel(){ txtTitle="巫師世界",txtContent="穿越到異世界成為普通的 小家族子弟,帶著具有分析能力的生物芯片開始強大之旅..... ", ImageUrl="http://image.qidian.com/books/2443169/2443169.jpg" }, new DataModel(){ txtTitle="殺神",txtContent="在這個人吃人的瘋狂世界,神 已無力回天,就讓我踏著漫天諸神的累累屍骨來普渡這芸芸眾生……", ImageUrl="http://image.qidian.com/books/1911245/1911245.jpg" } } }, new DataGroupModel(){ GroupTitle="網游小說", ItemContent=new ObservableCollection<DataModel>(){ new DataModel(){ txtTitle="全職高手",txtContent="網游榮耀中被譽為教科書 級別的頂尖高手,因為種種原因遭到俱樂部的驅逐,離開職業圈的他寄身於一家網吧成了一個小小的網管, ", ImageUrl="http://image.qidian.com/books/1887208/1887208.jpg" }, new DataModel(){ txtTitle="重生之賊行天下",txtContent="孤寂的行者,追逐 陰影的腳步,這是盜賊的贊歌。 帶著一個一百八十級的大盜賊的記憶,回到了十年前,命運給聶言開了一個 玩笑", ImageUrl="http://image.qidian.com/books/1693876/1693876.jpg" }, new DataModel(){ txtTitle="琥珀之劍",txtContent="命運在我眼前分開成兩條 互不相關筆直的線,一條通向火焰中熊熊燃燒的宮殿與城池,王國傾覆,大地承載苦難,生靈在這火中忍受煎 熬", ImageUrl="http://image.qidian.com/books/1784765/1784765.jpg" }, new DataModel(){ txtTitle="獨裁之劍",txtContent="來自銀耀天堂的智慧之光 ,自然之力的守護者, 這是阿克蒙斯神位德魯伊的王者傳奇。", ImageUrl="http://image.qidian.com/books/2172318/2172318.jpg" } } } }; } }
2.讓後台數據源傳輸給前台
public MainPage() { this.InitializeComponent(); this.DataContext = new ViewModelData(); }
3.前台界面將綁定後台頁面數據源,使用CollectionVieSource類設置數據源和ItemPath 。
<Grid.Resources> <CollectionViewSource x:Name="itemcollectSource" Source="{Binding Sourcedata}" IsSourceGrouped="true" ItemsPath="ItemContent" /> <DataTemplate x:Key="gvtemplate"> <Grid Width="250" Height="200" Background="#33CCCCCC"> <Grid.ColumnDefinitions> <ColumnDefinition Width="110"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Image Grid.Column="0" Margin="5,0,0,0" Source="{Binding ImageUrl}" Stretch="None"></Image> <TextBlock Grid.Column="1" Margin="15,15,0,0" Foreground="Black" Text="{Binding txtTitle}" FontWeight="Bold" FontSize="16" TextWrapping="Wrap"/> <TextBlock Grid.Column="1" Margin="15,40,0,0" Foreground="Black" Text="{Binding txtContent}" FontWeight="Light" FontSize="14" TextWrapping="Wrap"/> </Grid> </DataTemplate> </Grid.Resources>
4.GridView的前台設置如下
<GridView Name="gv_Item" SelectionMode="Single" ItemsSource="{Binding Source={StaticResource itemcollectSource}}" ItemTemplate="{StaticResource gvtemplate}" SelectedItem="{Binding ItemContent, Mode=TwoWay}" IsItemClickEnabled="True" Margin="120,140,20,20"> <GridView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </GridView.ItemsPanel> <GridView.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <Grid Margin="1,0,0,6"> <Button AutomationProperties.Name="組名稱" Content="{Binding GroupTitle}"/> </Grid> </DataTemplate> </GroupStyle.HeaderTemplate> <GroupStyle.Panel> <ItemsPanelTemplate> <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,50,0"/> </ItemsPanelTemplate> </GroupStyle.Panel> </GroupStyle> </GridView.GroupStyle> </GridView>
ItemsPanel是設置數據項在GridView中的呈現方向。
最後如需源碼請下載:http://files.cnblogs.com/chengxingliang/win8Gridview1.rar,然後我 們看效果圖如下圖: