【万里征程——Windows App开发】ListView&GridView之添加数据

简介:

ListView采用垂直堆叠得方式显示数据,而GridView则采用水平堆叠得方式。

长相的话嘛,它们都差不多啦。

    <Grid Name="grid1" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView x:Name="listView1" SelectionChanged="listView1_SelectionChanged">
            <x:String>Item 1</x:String>
            <x:String>Item 2</x:String>
        </ListView>

        <GridView x:Name="gridView1" SelectionChanged="gridView1_SelectionChanged">
            <x:String>Item 1</x:String>
            <x:String>Item 2</x:String>
        </GridView>
    </Grid>

当然啦,也可以在后台代码上添加哦。我只是为了将它们放在一起比较而已哦,这些代码堆一起肯定是很丑的。

            ListView listView1 = new ListView();
            listView1.Items.Add("Item 1");
            listView1.Items.Add("Item 2");
            listView1.Items.Add("Item 3");
            listView1.SelectionChanged += listView1_SelectionChanged;           
            grid1.Children.Add(listView1);        

            GridView gridView1 = new GridView();
            gridView1.Items.Add("Item 1");
            gridView1.Items.Add("Item 2");
            gridView1.SelectionChanged += gridView1_SelectionChanged;                                                                                                                        
            grid1.Children.Add(gridView1);           

如果只是像上面这样来添加内容会不会比较麻烦呢,我们也可以把这些Item 1、Item 2之类的全部放在List中哟。

            List<String> itemsList = new List<string>();
            itemsList.Add("Item 1");
            itemsList.Add("Item 2");

            ListView listView1 = new ListView();
            listView1.ItemsSource = itemsList;
            listView1.SelectionChanged += listView1_SelectionChanged;

            grid1.Children.Add(listView1);

这样一来所显示的ListView就是两行,非常简陋,完全不能够满足要求。那么我们可以用它的ItemTemplate属性来再里面添加一些东西,如下所示,我们可以在Grid中写一个Image绑定头像,用TextBlock绑定用户的ID,再来一个TextBlock绑定用户的消息,还可以来写边框呀什么的。而这些乱七八糟的Binding啥的,以后我们也会一起讲的哦,现在只要它们是数据绑定就好啦。

    <Page.Resources>
        <CollectionViewSource x:Name="collectionVS" Source="{Binding Items}"/>
    </Page.Resources>

    <Grid Name="grid1" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView x:Name="listView1"  ItemsSource="{Binding Source={StaticResource collectionVS}}"
          SelectionChanged="listView1_SelectionChanged">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>

                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>      
    </Grid>

还可以像下面这样哦,通过WrapGrid来决定这些Item的摆放方式。

这里写图片描述

    <Grid Name="grid1" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView VerticalAlignment="Bottom">

            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Vertical" MaximumRowsOrColumns="2"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

            <Rectangle Height="100" Width="100" Fill="Wheat" />
            <Rectangle Height="100" Width="100" Fill="White" />
            <Rectangle Height="100" Width="100" Fill="Gainsboro" />
            <Rectangle Height="100" Width="100" Fill="Violet" />
            <Rectangle Height="100" Width="100" Fill="DarkBlue" />
            <Rectangle Height="100" Width="100" Fill="RosyBrown" />
            <Rectangle Height="100" Width="100" Fill="SaddleBrown" />
            <Rectangle Height="100" Width="100" Fill="AliceBlue" />
            <Rectangle Height="100" Width="100" Fill="Fuchsia" />
            <Rectangle Height="100" Width="100" Fill="Aqua" />
            <Rectangle Height="100" Width="100" Fill="Tan" />
        </ListView>
    </Grid>

当然啦,对于ListView和GridView而言,知道用户选择了哪一项是很重要的。SelectionMode属性决定了ListView和GridView的选择模式:单个、多个、无、扩展。下面这个函数将选择的项给了selectedItems啦。我们还可以通过IsItemClickEnabled来启用ListView和GridView的点击事件,但是务必要注意将SelectionMode设置为None噢。

private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
     selectedItems = (List<object>)e.AddedItems;   
}    

有点晚了,剩下的明天再补上啦,感谢大家的支持,下篇见!

为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp

目录
相关文章
《仿盒马》app开发技术分享-- 确认订单页(数据展示)(29)
上一节我们实现了地址的添加,那么有了地址之后我们接下来的重点就可以放到订单生成上了,我们在购物车页面,点击结算会跳转到一个 订单确认页面,在这个页面我们需要有地址选择、加购列表展示、价格计算、优惠计算、商品数量展示等信息。
374 3
|
11月前
|
运维 iOS开发 Windows
windows电脑备案ios APP获取公钥和证书指纹Sha-1值的方法
在阿里云进行APP备案、在备案IOS端的环节的时候,发现需要我们将p12证书安装在电脑上,再用xcode或或钥匙串访问来获取这个证书的公钥和sha-1值。 但是大部分开发uniapp应用的同学们,或者进行发布的运维人员的电脑都是windows,无法按照阿里云的教程来获取ios的公钥和sha-1。备案就被卡主了。 这里介绍下另一个方法,就是使用香蕉云编来在线上传证书获取。如下图所示,打开香蕉云编后,找到下图这个功能
1435 0
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
2676 1
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1067 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
BI 开发工具 开发者
App全渠道统计方案:如何用一个工具整合所有获客渠道数据?
还在为地推、社群、广告等不同获客渠道的数据分散而烦恼吗?本文将教您如何用一个工具整合所有渠道数据,实现精准的渠道归因与效果分析。
514 0
|
Windows
【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
在Azure App Service中,CPU占比可在App Service Plan级别查看整个实例的资源使用情况。具体应用中仅能查看CPU时间,需通过公式【CPU Time / (CPU核数 * 60)】估算占比。CPU百分比适用于可横向扩展的计划(Basic、Standard、Premium),而CPU时间适用于Free或Shared计划。然而,CPU Percentage包含所有应用及系统占用的CPU,高CPU指标可能由系统而非应用请求引起。详细分析每个进程的CPU占用需抓取Windows Performance Trace数据。
410 40
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
12955 3
|
JSON API 网络安全
App数据的爬取
App数据的爬取
2228 3
|
Ubuntu Linux Python
如何利用wsl-Ubuntu里conda用来给Windows的PyCharm开发
如何在WSL(Windows Subsystem for Linux)的Ubuntu环境中使用conda虚拟环境来为Windows上的PyCharm开发设置Python解释器。
3004 1
|
存储 安全 程序员
Windows任务管理器开发原理与实现
Windows任务管理器开发原理与实现