Windows 8开发入门(二十) Windows 8中的GridView使用(二)2013-12-02 cnblogs 程兴亮Windows 8中的GridView使用(二)和DataTemplateSelector在本文中所讲述内容的实例仍然沿用于上篇文章,有什么疑惑可以参考上篇文章。一 GroupStyle 在GridView控件中我们可以对数据进行分组显示,通过对GridView的GroupStyle进行控制,分别设置 GroupStyle.HeaderTemplate和GroupStyle.Panel。如下代码:
<GridView.GroupStyle><GroupStyle><GroupStyle.HeaderTemplate><DataTemplate><Grid Margin="1,0,0,6"><ButtonAutomationProperties.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>
二 DataTemplateSelector 在不同的组之间我们想使 用不同的样式进行显示,在这里我们可以继承重写DataTemplateSelector类编写并且根据后台数据选择相应的 样式模版进行呈现。在之前代码的基础上我们需要做以下工作:1.编写一个类继承于 DataTemplateSelector
public class TemplateSelector : DataTemplateSelector{/// <summary>/// 第一种文本显示模版/// </summary>public DataTemplate TextBoxTemplate { get; set; }/// <summary>/// 第二种图片为主显示模版/// </summary>public DataTemplate ImageTemplate { get; set; }/// <summary>/// 核心方法:根据不同的数据源类型返回给前台不同的样式模版/// </summary>/// <param name="item"></param>/// <param name="container"></param>/// <returns></returns>protected override DataTemplate SelectTemplateCore(object item, DependencyObject container){DataModel model = item as DataModel; string typeName = model.MainModel.Name;if (typeName == typeof(TextBox).Name)//根据数据源设置的数据显示模式返回前台样式模版{return TextBoxTemplate;}if (typeName == typeof(Image).Name){return ImageTemplate;}return null;}}