windows phone 8.1 listbox 分组显示

初次了解list分组的朋友可以先看看,如下链接!
http://www.cnblogs.com/linzheng/archive/2014/09/28/3999217.html

链接的内容 只是介绍了基本雏形,我下面把我个人的一些修改加了进去,
希望能对大家有所帮助! 如果发现我哪有不足,请提出,相互交流才可以更好的进步

.xaml  代码

  1. <!--分组 缩略list 背景颜色-->
  2. <Page.Resources>
  3. <prim:JumpListItemBackgroundConverter
    x:Key="BackgroundConverter"  Enabled="#FF0086D0"
    Disabled="{ThemeResource ContentDialogDimmingThemeBrush}"/>
  4. <prim:JumpListItemForegroundConverter x:Key="ForegroundConverter"/>
  5. </Page.Resources>
  6. <Grid>
  7. <Grid.Resources>
  8. <!--创建数据源对象,注意ItemContent属性就是数据源中真正的基础数据的列表的属性,必须设置该属性的值数据源才能定位到实际绑定的数据实体对象-->
  9. <CollectionViewSource x:Name="itemcollectSource" IsSourceGrouped="true" ItemsPath="InternalList" />
  10. </Grid.Resources>
  11. <SemanticZoom x:Name="semanticZoom">
  12. <SemanticZoom.ZoomedInView>
  13. <!-- 在这里放置GridView(或ListView)以表示放大视图 -->
  14. <ListView x:Name="inView">
  15. <ListView.GroupStyle>
  16. <GroupStyle HidesIfEmpty="True">
  17. <!--用于显示列表头的数据项的模板-->
  18. <GroupStyle.HeaderTemplate >
  19. <DataTemplate>
  20. <Border Background="#FF0086D0" Height="50" Width="50">
  21. <TextBlock
    Text="{Binding Key}" FontSize="37.333" Foreground="White"
    HorizontalAlignment="Center" VerticalAlignment="Center"/>
  22. </Border>
  23. </DataTemplate>
  24. </GroupStyle.HeaderTemplate>
  25. </GroupStyle>
  26. </ListView.GroupStyle>
  27. <!--用于显示列表的数据项的模板-->
  28. <ListView.ItemTemplate>
  29. <DataTemplate>
  30. <StackPanel>
  31. <TextBlock Text="{Binding Title}" Height="40" FontSize="30"></TextBlock>
  32. </StackPanel>
  33. </DataTemplate>
  34. </ListView.ItemTemplate>
  35. </ListView>
  36. </SemanticZoom.ZoomedInView>
  37. <SemanticZoom.ZoomedOutView>
  38. <!-- 在这里放置GridView(或ListView)以表示缩小视图 -->
  39. <GridView x:Name="outView" Background="#7F000000" Margin="0,10,0,0">
  40. <!--用于显示弹出的分组列表视图的数据项的模板-->
  41. <GridView.ItemTemplate>
  42. <DataTemplate>
  43. <Grid Width="90" Height="90">
  44. <Border Background="{Binding
    Converter={StaticResource BackgroundConverter}}" Margin="0,10,10,0"
    >
  45. <TextBlock
    Text="{Binding Group.Key}" FontSize="37.333" HorizontalAlignment="Left"
    VerticalAlignment="Bottom"
  46. Foreground="{Binding Converter={StaticResource ForegroundConverter}}"/>
  47. </Border>
  48. </Grid>
  49. </DataTemplate>
  50. </GridView.ItemTemplate>
  51. </GridView>
  52. </SemanticZoom.ZoomedOutView>
  53. </SemanticZoom>
  54. </Grid>

复制代码

,cs 代码

  1. public void fun()
  2. {
  3. this.InitializeComponent();
  4. // 先创建一个普通的数据集合
  5. List<Item> mainItem = new List<Item>();
  6. for (int i = 0; i < 10; i++)
  7. {
  8. mainItem.Add(new Item { Content = "A", Title = "Test A" + i });
  9. mainItem.Add(new Item { Content = "B", Title = "Test B" + i });
  10. mainItem.Add(new Item { Content = "C", Title = "Test C" + i });
  11. mainItem.Add(new Item { Content = "D", Title = "Test A" + i });
  12. mainItem.Add(new Item { Content = "F", Title = "Test B" + i });
  13. mainItem.Add(new Item { Content = "G", Title = "Test C" + i });
  14. mainItem.Add(new Item { Content = "C", Title = "Test C" + i });
  15. mainItem.Add(new Item { Content = "C", Title = "Test C" + i });
  16. mainItem.Add(new Item { Content = "C", Title = "Test C" + i });
  17. mainItem.Add(new Item { Content = "H", Title = "Test A" + i });
  18. mainItem.Add(new Item { Content = "I", Title = "Test B" + i });
  19. mainItem.Add(new Item { Content = "M", Title = "Test C" + i });
  20. mainItem.Add(new Item { Content = "N", Title = "Test A" + i });
  21. mainItem.Add(new Item { Content = "O", Title = "Test B" + i });
  22. mainItem.Add(new Item { Content = "P", Title = "Test C" + i });
  23. mainItem.Add(new Item { Content = "Q", Title = "Test A" + i });
  24. mainItem.Add(new Item { Content = "R", Title = "Test B" + i });
  25. mainItem.Add(new Item { Content = "S", Title = "Test C" + i });
  26. mainItem.Add(new Item { Content = "T", Title = "Test A" + i });
  27. mainItem.Add(new Item { Content = "W", Title = "Test B" + i });
  28. mainItem.Add(new Item { Content = "V", Title = "Test C" + i });
  29. mainItem.Add(new Item { Content = "U", Title = "Test A" + i });
  30. mainItem.Add(new Item { Content = "X", Title = "Test B" + i });
  31. mainItem.Add(new Item { Content = "Y", Title = "Test C" + i });
  32. mainItem.Add(new Item { Content = "Z", Title = "Test C" + i });
  33. }
  34. // 使用LINQ语法把普通的数据集合转换成分组的数据集合
  35. //List<ItemInGroup> Items = (from item in
    mainItem group item by item.Content into newItems select new ItemInGroup
    { Key = newItems.Key, ItemContent = newItems.ToList() }).ToList();
  36. List<AlphaKeyGroup<Item>> Items = AlphaKeyGroup<Item>.CreateGroups(
  37. mainItem,
  38. (Item s) => { return s.Title; },
  39. true);
  40. // 设置CollectionViewSource对象的数据源
  41. this.itemcollectSource.Source = Items;
  42. // 分别对两个视图进行绑定
  43. outView.ItemsSource = itemcollectSource.View.CollectionGroups;
  44. inView.ItemsSource = itemcollectSource.View;
  45. }
  46. }
  47. // 分组的实体类,也就是分组的数据集合最外面的数据项的实体类
  48. public class ItemInGroup
  49. {
  50. // 分组的组头属性
  51. public string Key { get; set; }
  52. // 分组的数据集合
  53. public List<Item> ItemContent { get; set; }
  54. }
  55. // 列表的数据实体类
  56. public class Item
  57. {
  58. public string Title { get; set; }
  59. public string Content { get; set; }
  60. }

复制代码

时间: 2024-08-02 04:19:07

windows phone 8.1 listbox 分组显示的相关文章

wpf CollectionViewSource与ListBox的折叠、分组显示,及输入关键字 Filter的筛选

在wpf中虽然ObservableCollection<T>作为ListBox的Itemsource,很好,很强大!但是CollectionViewSource与ListBox才是天作之合! wpf中ListBox支持分组显示,CollectionViewSource.GroupDescriptions为其实现了分组.废话不多说,下面上ListBox分组显示的Demo代码: XAML: <Window x:Class="WpfListGroup.MainWindow"

MySQL数据中分级分组显示数据

前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQL数据库中创建数据表: CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分类id' , `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_gene

Group GridView:用于.Net的分组显示的GridView

我的项目需要一个可以分组显示的GridView,我不会写,上网找了一圈,最终在国外的网站上找到的这个,比较符合我的要求,但它的分页得重写,它写了能分页,但我发现它的分页功能事实上并没有实现,也不知道是不是我没找见. 先上图: 此demo原作者:Anurag Gandhi 为方便查看效果,此demo数据源是.XLS文件,不是数据库. 程序:http://files.cnblogs.com/kangjing/GroupGridView.zip Group GridView:用于.Net的分组显示的G

windows 2008 server 英文版 支持中文显示

1:打开Start menu(开始菜单)并单击Control Panel(控制面板)打开它 2:单击Clock, Language, and Region(时钟.语言和区域)下面的Change display language(更改显示语言) 3:切换到Administrative(管理)选项卡.单击Change system locale-(更改系统区域设置)按钮注:若弹出用户账户控制窗口,请允许以继续. 4:将Current system locale (当前系统区域设置)改为:Chines

latex: pgfplots多个图分组显示

参考:How can a title be placed for a group of pgfplots?, pgfplots手册中5.7节Grouping plots介绍 问题来源:当使用latex写文档时,通常会画各种图,绘图的方式非常多,比如可以用excel绘好,可用专业的绘图软件origin,以及各种可视化图形编辑工具,这些工具有个共同的特点就是需要绘制好图后,需要将图转换为pdf格式,然后再在latex中引用,缺点如下: 需要频繁生成pdf图片并使用acrobat裁剪该图片: 图的规格

Linq DataTable Group By 分组显示人员明细

原始数据: 分组后的输出结果: 源代码: 1 public static void PrintPersons() 2 { 3 //准备数据 4 DataTable dt = new DataTable(); 5 dt.Columns.Add(new DataColumn("ID", typeof(int))); 6 dt.Columns.Add(new DataColumn("UserName", typeof(string))); 7 dt.Columns.Add

Snail—UI学习之UITableView之分组显示

之前的demo都是一个分组显示数据的 这次我们用的是带有分组的tableView #import "WJJRootViewController.h" @interface WJJRootViewController (){ UITableView * _tableView; NSMutableArray * _dataArray; } @end @implementation WJJRootViewController - (id)initWithNibName:(NSString *

Android GridView 分组显示(仿京东商品分类)

Android GridView 分组显示(仿京东商品分类) Gridview分组显示, 仿京东分类效果 GridView 分组显示使用的第三方开源库: StickyGridHeadersGridView , 下载地址: https://github.com/TonicArtos/StickyGridHeaders 大致实现步骤: 1. adapter:  SPCategoryRightAdapter extends BaseAdapter implements StickyGridHeader

android的listview分组显示的时候layout_marginTop失效的解决办法

在使用android的ListView组件做类似于通讯录这样的功能时,需要根据A.B.C这样的标题来区来分组显示通讯录中的姓名,本人在做实验过程中遇到了这样一个问题,比如,想让标题item和上边的用户名item中间有个间隙,而组(同个标题下)用户名之间不能有间隙,原本以为很简单,我认为在标题item的最外层LinearLayout中增加一个layout_marginTop属性即可,结果发现一只无效,最后请教了个高手告诉我需要在标题item的顶层LinearLayout中再嵌套一层,然后在第二层中