查看: 630|回复: 9

[其他] uwp 中listview或Gridview 如何分组显示

[复制链接]

签到天数: 37 天

连续签到: 2 天

[LV.5]常住居民I

47

主题

860

积分

362

支持

发表于 2017-7-7 14:11:41 | 显示全部楼层 |阅读模式

马上注册,享受积分奖励和更多功能,让您轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题,对wpf绑定模板不太熟属性,官方的资料没看明白,希望大神能详细讲解下原理
下面是官方的实例中:
https://msdn.microsoft.com/zh-cn ... /xaml/hh780627.aspx

签到天数: 21 天

连续签到: 1 天

[LV.4]偶尔看看III

0

主题

42

积分

0

支持

发表于 2017-7-7 16:10:22 | 显示全部楼层
首先在MainPage.xaml.cs中:定义了两个类,Project{Name,Activity{Name,DueDate,Complete,Project}}、Activity{Name,DueDate,Complete,Project};
这两个类都可以用作分组的数据源,Project类以Name为分组依据,Activity以Project自分组为分组依据。





[你知道吗]:

签到天数: 21 天

连续签到: 1 天

[LV.4]偶尔看看III

0

主题

42

积分

0

支持

发表于 2017-7-7 16:13:08 | 显示全部楼层
在MainPage.xaml中:定义了两个数据源,cvsActivities里的数据来源于Activity类,cvsProjects里的数据来源于Project类
   <UserControl.Resources>
        <CollectionViewSource x:Name="cvsActivities" IsSourceGrouped="True"/>

        <CollectionViewSource x:Name="cvsProjects" IsSourceGrouped="True" ItemsPath="Activities"/>

        <local:ListGroupStyleSelector x:Key="listGroupStyleSelector"/>
    </UserControl.Resources>
[你知道吗]:

签到天数: 21 天

连续签到: 1 天

[LV.4]偶尔看看III

0

主题

42

积分

0

支持

发表于 2017-7-7 16:19:30 | 显示全部楼层
将cvsActivities绑定到ListView的ItemSource, ItemTemplate是ListView每一项的数据模板,用来定义显示哪些内容及其样式
GroupStyleSelector为分组选择器,用来显示分组依据。istViewItemTemplate和istViewItemTemplate  在App.xaml里定义了具体样式
<ListView ItemsSource="{Binding Source={StaticResource cvsActivities}}"
          ItemTemplate="{StaticResource listViewItemTemplate}"
          GroupStyleSelector="{StaticResource istViewItemTemplate}"
          Margin="120" Width="320"/>

签到天数: 21 天

连续签到: 1 天

[LV.4]偶尔看看III

0

主题

42

积分

0

支持

发表于 2017-7-7 16:28:41 | 显示全部楼层
DataTemplate是ListView数据项模板,里面主要有三个内容:TextBlock 显示Name,TextBlock显示DueDate,CheckBox 显示是否Complete
<DataTemplate x:Key="listViewItemTemplate">
                <StackPanel Width="320" Margin="10">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Name}" FontWeight="Bold" Style="{StaticResource BaseTextBlockStyle}"
                       Margin="2,0,0,0"/>
                        <TextBlock Text="{Binding DueDate}" Style="{StaticResource BodyTextBlockStyle}" TextWrapping="NoWrap"
                       Margin="20,0,0,0"/>
                    </StackPanel>
                    <CheckBox Content="Complete" IsChecked="{Binding Complete}" IsEnabled="False"/>
                </StackPanel>
            </DataTemplate>
GroupStyle为分组样式,这里使用的是Activity自分组,List<Activity>查询Activity里的Project自己分组
            <GroupStyle x:Key="listViewGroupStyle">
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <Grid Background="LightGray"  >
                            <TextBlock Text='{Binding Key}' Foreground="Black" Margin="10"
                           Style="{StaticResource SubheaderTextBlockStyle}" />
                        </Grid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
[你知道吗]:

签到天数: 37 天

连续签到: 2 天

[LV.5]常住居民I

47

主题

860

积分

362

支持

 楼主| 发表于 2017-7-7 17:41:59 | 显示全部楼层
jaioh 发表于 2017-7-7 16:28
DataTemplate是ListView数据项模板,里面主要有三个内容:TextBlock 显示Name,TextBlock显示DueDate,CheckB ...

多谢,回复,我在资讯看看文档

签到天数: 37 天

连续签到: 2 天

[LV.5]常住居民I

47

主题

860

积分

362

支持

 楼主| 发表于 2017-7-8 10:36:46 | 显示全部楼层
jaioh 发表于 2017-7-7 16:28
DataTemplate是ListView数据项模板,里面主要有三个内容:TextBlock 显示Name,TextBlock显示DueDate,CheckB ...

热心的大神,我又来做伸手党了,

Pivot我定义模板,设置Pivotitemloading事件,通过参数:PivotItemEventArgs args只得到PivotItem,如何得到PivotItem里面的控件?
还有就是uwp中如何通过父view获取到view?比如我有有个Grid 定义x:name为“grid” 如何在代码中动态的获取下面子view,并修改名称
[你知道吗]:

签到天数: 415 天

连续签到: 261 天

[LV.9]以坛为家II

8

主题

2812

积分

10

支持

发表于 2017-7-8 11:04:54 来自手机 | 显示全部楼层
百度 发表于 2017-7-8 10:36
热心的大神,我又来做伸手党了,

Pivot我定义模板,设置Pivotitemloading事件,通过参数:PivotItemEvent ...

先把你的理念变一下,数据和显示两者是分离的,理论上,控件不知道数据从哪来,数据不知道哪个控件用它,和MVC的概念是一样的。否则的话,模板和数据之间就绑死了。如果必须知道,则在控件中定义名称,通过模板的FindName,通过控件的名称来找控件。

补充:也可以通过视觉树来找。

来自:Lumia 650 Win10新机-智机社区客户端

签到天数: 37 天

连续签到: 2 天

[LV.5]常住居民I

47

主题

860

积分

362

支持

 楼主| 发表于 2017-7-8 14:04:12 | 显示全部楼层
Foxer 发表于 2017-7-8 11:04
先把你的理念变一下,数据和显示两者是分离的,理论上,控件不知道数据从哪来,数据不知道哪个控件用它,和 ...

多谢,我是学习一个类似网易新闻的界面,定义一个pivot ,每个pivotitem都是一个listview 想通过 pivotitemloading事件改变listview中的item的样式和listview的数据
[你知道吗]:

签到天数: 616 天

连续签到: 25 天

[LV.9]以坛为家II

22

主题

1546

积分

283

支持

发表于 2017-7-8 15:33:05 来自手机 | 显示全部楼层
直接ListView嵌ListView就可以

来自:Lumia 950 XL Win10旗舰-智机社区客户端
您需要登录后才可以回帖 登录 | 注册

本版积分规则

         

网站地图| 小黑屋|京ICP证150706号|京B2-20160045| 京公网安备11010802018258号

Powered by Discuz! X3.2 / Copyright 2010-2017 © 智机网 WFUN.COM Inc. All rights reserved.

快速回复 返回顶部 返回列表