UWP ListView添加分割线
先看效果:

我并没有找到有设置ListView分割线的属性
下面是一个比较简单的实现,如果有同学有更好的实现,欢迎留言,让我们共同进步。我的叙述不一定准确
实现的方法就是在DataTemplate里包一个Border
1、首先自定义一个UserControl来实现布局,文件名为ItemView.xaml,代码如下
xaml代码
1 <UserControl
2 x:Class="Demo.UWP.ItemViews.NewsItemView"
3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5 xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7 xmlns:local="using:Demo.UWP.ItemViews"
8 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9 d:DesignHeight="300"
10 d:DesignWidth="400"
11 mc:Ignorable="d">
12 <Border BorderBrush="#e3e3e3" BorderThickness="0,0.5,0,0">
13 <Grid>
14 <Grid.ColumnDefinitions>
15 <ColumnDefinition Width="Auto" />
16 <ColumnDefinition Width="*" />
17 </Grid.ColumnDefinitions>
18 <Grid.RowDefinitions>
19 <RowDefinition Height="Auto" />
20 </Grid.RowDefinitions>
21 <controls:ImageEx
22 Grid.Column="0"
23 Width="88"
24 Height="66"
25 Margin="10"
26 HorizontalAlignment="Center"
27 VerticalAlignment="Center"
28 IsCacheEnabled="True"
29 PlaceholderSource="{x:Bind News.PlaceholderSource}"
30 PlaceholderStretch="UniformToFill"
31 Source="{x:Bind News.ImgUrl}"
32 Stretch="UniformToFill" />
33
34 <Grid
35 Grid.Row="0"
36 Grid.Column="1"
37 Margin="0,0,10,5">
38 <Grid.ColumnDefinitions>
39 <ColumnDefinition Width="*" />
40 </Grid.ColumnDefinitions>
41 <Grid.RowDefinitions>
42 <RowDefinition Height="Auto" />
43 <RowDefinition Height="Auto" />
44 <RowDefinition Height="Auto" />
45 </Grid.RowDefinitions>
46 <TextBlock
47 Grid.Row="0"
48 Grid.Column="0"
49 Margin="0,5,0,0"
50 FontSize="14"
51 Foreground="Black"
52 Text="{x:Bind News.Title}"
53 TextWrapping="Wrap" />
54 <TextBlock
55 Grid.Row="1"
56 Grid.Column="0"
57 Margin="0,0,0,0"
58 FontSize="12"
59 Foreground="LightGray"
60 Text="{x:Bind News.SubTitle}"
61 TextWrapping="Wrap" />
62 <TextBlock
63 Grid.Row="2"
64 Grid.Column="0"
65 Margin="0,0,0,0"
66 FontSize="12"
67 Foreground="Red"
68 Text="{x:Bind News.Price}"
69 TextWrapping="Wrap" />
70 </Grid>
71 </Grid>
72 </Border>
73 </UserControl>
cs代码
1 using Demo.UWP.Models;
2 using System;
3 using System.Collections.Generic;
4 using System.IO;
5 using System.Linq;
6 using System.Runtime.InteropServices.WindowsRuntime;
7 using Windows.Foundation;
8 using Windows.Foundation.Collections;
9 using Windows.UI.Xaml;
10 using Windows.UI.Xaml.Controls;
11 using Windows.UI.Xaml.Controls.Primitives;
12 using Windows.UI.Xaml.Data;
13 using Windows.UI.Xaml.Input;
14 using Windows.UI.Xaml.Media;
15 using Windows.UI.Xaml.Navigation;
16
17 // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
18
19 namespace Demo.UWP.ItemViews
20 {
21 public sealed partial class NewsItemView : UserControl
22 {
23 public NewsBean News => this.DataContext as NewsBean;
24 public NewsItemView()
25 {
26 this.InitializeComponent();
27 this.DataContextChanged += (s, e) => Bindings.Update();
28 }
29 }
30 }
这里用到了x:Bind,需要知道绑定数据的类型,将DataContext转换为NewsBean对象,(=>其实就是定义属性的简写)
2、定义一个ListView
1 <Page.Resources>
2 <ResourceDictionary>
3 <DataTemplate x:Key="NewsTemplate">
4 <local:NewsItemView />
5 </DataTemplate>
6 </ResourceDictionary>
7 </Page.Resources>
8 <ListView
9 IsItemClickEnabled="True"
10 ItemContainerStyle="{StaticResource ListViewItemStyle1}"
11 ItemTemplate="{StaticResource NewsTemplate}"
12 ItemsSource="{x:Bind NewsList}"
13 SelectionMode="None" />
ViewModel
1 public ObservableCollection<ItemData> NewsList { get; set; }
2
3 public HomeViewModel()
4 {
5 NewsList = new ObservableCollection<ItemData>
6 {
7 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
8 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用,建议6-7人使用,建议6-7人使用", Price = "¥328", ItemType = 2},
9 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
10 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
11 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
12 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
13 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
14 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2},
15 new NewsBean() {Title = "东北小厨", SubTitle = "[丰庄]午市套餐C,建议6-7人使用", Price = "¥328", ItemType = 2}
16 };
17
18 }
3、发现了一个问题,分割线没有撑满,怎么办呢?
更改ItemContainerStyle
<Style x:Key="ListViewItemStyle1" TargetType="ListViewItem"
<!--去除默认边距-->
<Setter Property="Padding" Value="0" />
<!--让宽度撑满-->
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
转载请标明出处:http://www.cnblogs.com/xiaocaidev/p/6995743.html,本文出自:【xiaocaidev的博客】
UWP ListView添加分割线的更多相关文章
- UWP ListView添加不同样式
先看效果: 使用ListView的ItemTemplateSelector <ListView IsItemClickEnabled="True" ItemContainer ...
- 仿喜马拉雅实现ListView添加头布局和脚布局
ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...
- Android listview自定义分割线宽度
代码很简单防止以后忘记 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:an ...
- android listview去掉分割线
1:android listview去掉分割线 1>设置android:divider="@null" 2>android:divider="#0000000 ...
- ListView添加项目带序列
ListView添加项目带序列 function AddSelItems(listview1:TListView;ListView2:TListView):Boolean;var s: st ...
- 为ListView添加头和脚
转自:https://software.intel.com/zh-cn/blogs/2014/12/15/android-listview-addheaderview-addfooterview ...
- 【转】三十三、Android给ListView设置分割线Divider样式
原文网址:http://www.cnblogs.com/linjiqin/archive/2011/11/12/2246349.html 给ListView设置分割线,只需设置如下两个属性: andr ...
- Android给ListView设置分割线Divider样式
给ListView设置分割线,只需设置如下两个属性: android:divider="#000" //设置分割线显示颜色 android:dividerHeight=" ...
- 自定义listView添加滑动删除功能
今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个 ...
随机推荐
- 「LOJ 539」「LibreOJ NOIP Round #1」旅游路线
description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那 ...
- 实战教程:如何将自己的Python包发布到PyPI上
1. PyPi的用途 Python中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从Pypi.org里面下载. 我们举个栗子: 如果你希望用Python实现一个金融量化分析工具,目前 ...
- 【ES6】ES6入门笔记
1.概要 - ECMAScript2015(ES6)是Javascript最标准的语法式样,是在2015年6月由Ecma国籍组织公布的最新版本,现在已经被多个领域和浏览器所广泛采纳和使用. 2.学习网 ...
- kakafka - 为CQRS而生fka - 为CQRS而生
前段时间跟一个朋友聊起kafka,flint,spark这些是不是某种分布式运算框架.我自认为的分布式运算框架最基础条件是能够把多个集群节点当作一个完整的系统,然后程序好像是在同一台机器的内存里运行一 ...
- 安装swoole扩展
wget https://github.com/swoole/swoole-src/archive/v1.9.3-stable.tar.gz tar -zxvf v1.9.3-stable.tar.g ...
- 安装git和lsof
yum install git yum install lsof 查看80端口 lsof -i:80
- leetcode 1046
class Solution { public int lastStoneWeight(int[] stones) { MaxHeap s=new MaxHeap(stone ...
- 聊聊ReentrantLock实现原理
ReentrantLock 是常用的锁,相对于Synchronized ,lock锁更人性化,阅读性更强 从LOCK切入 考虑下面的场景如果有A,B线程,同时去执行lock.lock(Lock loc ...
- Java基础教程——抽象类
抽象类 抽象类是介于普通类(class)和接口(interface)之间的一种特殊类. 接口的方法都不实现,类的方法都必须实现,抽象类里的方法可以实现,可以不实现. Java 8之后接口中可以实现方法 ...
- Pytest学习(十二)-生成HTML报告插件之pytest-html的使用
环境前提 Python3.6+ 安装插件 pip3 install pytest-html -i http://pypi.douban.com/simple/ --trusted-host pypi. ...