Windows 8 Metro中对GridView或ListView使用分组功能详解
来源:互联网 发布:e8票据打印软件 编辑:程序博客网 时间:2024/04/30 09:37
在应用中使用GridView或ListView可以页面上很多信息能更明朗化,如果再加上分组的话那就更清晰了。以下是本人查阅资料整理的关于Group化的知识点。
先来张效果图:
以GridView为例,步骤如下:
1、在XAML中先放一个GridView控件,然后右击该控件,选择添加分组。
添加以后,<GridView>标签里会自动添加一长串代码,如下:
<GridView> <GridView.GroupStyle> <GroupStyle> <GroupStyle.ContainerStyle> <Style TargetType="GroupItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GroupItem"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"/> <ItemsControl x:Name="ItemsControl" ItemsSource="{Binding GroupItems}" Grid.Row="1"/> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </GroupStyle.ContainerStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock/> </DataTemplate> </GroupStyle.HeaderTemplate> <GroupStyle.Panel> <ItemsPanelTemplate> <VariableSizedWrapGrid/> </ItemsPanelTemplate> </GroupStyle.Panel> </GroupStyle> </GridView.GroupStyle></GridView>
2、修改代码,改成自己想要的样式。
1)分析下代码,发现代码里多的是一个叫GroupStyle的属性,下面又分别有ContainerStyle(容器属性,以上图为例,包括省和城市的一整块区域)、HeaderTemplate(标题模板,以上图为例,显示省的区域的模板)、Panel(排版,设置每个Container横向还是竖向排列,每行或每列的最大数)。
其中HeaderTemplate是必要的,保留并修改<DataTemplate>标签里的控件即可。其他两个属性不需要修改的话可以直接删掉。
2)接下来添加ItemTemplate,此时的ItemTemplate还是和往常一样代表每一个具体子模板(以上图为例,表示城市的区域的模板)。修改成自己想要的样式即可。
3、数据源。
这里要绑定的数据源不能是普通的 List 之类的 source,也要有分组的结构。即 List 下的每一个 object 包含一个Key(对应Header,如省)和一个 List (对应该Key下的 Items,如该省的城市)。如:
class Province { public string ProvinceName { set; get; } public List<string> CityNames { set; get; } }
4、控件绑定。
先定义个CollectionViewSource。
<CollectionViewSource x:Name="InfoList" IsSourceGrouped="True" ItemsPath="CityNames"/>
其中,IsSourceGrouped要设为 true,ItemsPath对应各 ItemTemplate 的数据源路径。
给GridView绑定 CollectionViewSource。
<GridView ItemsSource="{Binding Source={StaticResource InfoList}}">
给Header(标题)绑定。
<GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock Text="{Binding ProvinceName}"/> </DataTemplate> </GroupStyle.HeaderTemplate>
这里要要绑定数据源的Key,即 ProvinceName 。
给 Item 绑定。
<GridView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}" /> </DataTemplate></GridView.ItemTemplate>
这里因为 CollectionViewSource 里指定了Path 为CityNames ,故在此只写 Binding 即可,每个 Item 会自动去取 CityNames 下的 string。如果 Item 的模板比较复杂, CityNames 也不只是个 string 的 List,那么具体情况,在 Binding 后面加上要绑定的数据路径。
5、数据绑定。
在 .cs 文件里创建个 Province 的 List,赋一些初始值,再加到 CollectionViewSource 上去。
List<Province> list = new List<Province>();// ...// 通过检索数据库或手动塞一些值到 list 里去// ...InfoList.Source = list;
6、运行程序查看效果。参照第一张图片展示。(具体效果可能有点出入,因为上图的效果里本人设置了 Panel 属性。)
XAML中 GridView 的完整代码如下:
<Page.Resources> <CollectionViewSource x:Name="InfoList" IsSourceGrouped="True" ItemsPath="CityNames"/></Page.Resources><GridView ItemsSource="{Binding Source={StaticResource InfoList}}"> <GridView.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock Text="{Binding ProvinceName}"/> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </GridView.GroupStyle> <GridView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}"/> </DataTemplate> </GridView.ItemTemplate></GridView>
如果对分组熟悉了的话,以上的第一步就不需要了,直接在 <GridView> 标签里写代码就是了。不需要特别的格式什么的话,ContainerStyle 和 Panel 都可以不设,如果要设的话,就写上。自己想要什么样的模板,自己去创建吧。
另外,分组功能配合 SemanticZoom 控件来用的话,效果会更好,这里暂时就不介绍了。
- Windows 8 Metro中对GridView或ListView使用分组功能详解
- Windows 8 Metro应用中 Google Analytics功能的使用
- Windows 8 Metro中GridView的Group化和SemanticZoom控件的配合使用
- android实现ListView或GridView中item的倒数功能
- Windows 8 Metro应用中使用调摄像头截图、截视频的功能
- scrollview嵌套listview,gridview时使用自定义listview或gridview
- ListView嵌套GridView使用详解
- ListView嵌套GridView使用详解
- 在SrollView中嵌套GridView或ListView
- 在SrollView中嵌套GridView或ListView
- 在SrollView中嵌套GridView或ListView
- listView或者scrollView中包含gridView或listView的解决方法
- 在ListView或GridView 中使用到跑马灯滚动效果实现的问题。
- Windows8 Metro应用中使用Twitter功能简介
- ListView嵌套GridView使用详解及注意事项
- ListView嵌套GridView使用详解及注意事项
- ListView嵌套GridView使用详解及注意事项
- ListView嵌套GridView使用详解及注意事项
- 绝对不容错过的野生动物wildlife摄影作品
- 理解RESTful架构
- 电视收视率评估工具推荐
- Android SDK 无法更新的解决办法
- 算术逻辑位运算
- Windows 8 Metro中对GridView或ListView使用分组功能详解
- sql脚本
- Struts2教程1:第一个Struts2程序
- NDK 编译中so的名字不要用下划线哦
- hoho
- Android Camera 使用小结
- QML与Qt C++ 交互机制探讨与总结
- getaddrinfo()函数详解
- 西卡学院单链表的实现(带空表头的实现)