先看效果:

我并没有找到有设置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添加分割线的更多相关文章

  1. UWP ListView添加不同样式

    先看效果: 使用ListView的ItemTemplateSelector <ListView IsItemClickEnabled="True" ItemContainer ...

  2. 仿喜马拉雅实现ListView添加头布局和脚布局

     ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...

  3. Android listview自定义分割线宽度

    代码很简单防止以后忘记 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:an ...

  4. android listview去掉分割线

    1:android listview去掉分割线 1>设置android:divider="@null" 2>android:divider="#0000000 ...

  5. ListView添加项目带序列

    ListView添加项目带序列     function AddSelItems(listview1:TListView;ListView2:TListView):Boolean;var  s: st ...

  6. 为ListView添加头和脚

      转自:https://software.intel.com/zh-cn/blogs/2014/12/15/android-listview-addheaderview-addfooterview ...

  7. 【转】三十三、Android给ListView设置分割线Divider样式

    原文网址:http://www.cnblogs.com/linjiqin/archive/2011/11/12/2246349.html 给ListView设置分割线,只需设置如下两个属性: andr ...

  8. Android给ListView设置分割线Divider样式

    给ListView设置分割线,只需设置如下两个属性: android:divider="#000" //设置分割线显示颜色 android:dividerHeight=" ...

  9. 自定义listView添加滑动删除功能

    今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个 ...

随机推荐

  1. 「CERC2017」Donut Drone

    题目链接 洛谷P4739 题目翻译: 你正在模拟无人机探索一个不稳定的环状行星的过程.技术上说,无人机正在穿过一个环形网格---一个在两维上都首尾环绕在一起的矩形网格.格子的行号从上到下依次编号为\( ...

  2. php-fpm和nginx配置

    groupadd www-data useradd -g www-data www-data find / -name "php-fpm.conf" 把所有文件下的 改成www-d ...

  3. JZOJ2020年8月13日提高组反思

    JZOJ2020年8月13日提高组反思 T1 打了3h+,然后自己的小数据都没过 果断选择交对拍的暴力 下次还是注意时间吧 T2 一下三题都没时间打了 看了题目觉得特别烦人(有式子) 再看发现式子类似 ...

  4. 单调栈模板 POJ3250

    上次二分st表大法失败以后的又一次尝试233333 封装,封装,封装!!!!!! #include <bits/stdc++.h> using namespace std; #define ...

  5. 在Python中使用moviepy进行视频剪辑时输出文件报错 ‘NoneType‘ object has no attribute ‘stdout‘问题

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 movipy输出文件时报错 'NoneType' ...

  6. Python中__new__方法为什么有人说是构造方法?有什么作用?

    __new__方法是Python新式类引入的,通常用于控制生成一个新实例的过程.它是类级别的静态方法,是在创建实例对象前执行,如果自定义类中没有重写该方法,则Python自动调用父类的方法,当所有父类 ...

  7. PyQt(Python+Qt)学习随笔:QTableWidget的takeItem和sortItems方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget中的takeItem方法从表格中取并去除项,sortItems方法对表格中的 ...

  8. PyQt(Python+Qt)学习随笔:formLayout的layoutLabelAlignment 属性

    一.引言 Qt Designer的表单布局(formLayout)中,layoutLabelAlignment 用于控制表单布局中标签的水平对齐方式(包括垂直和水平方向两个方向).如图: 此属性实际对 ...

  9. 关于将Linux中默认的OpenJDK替换为JDK的方法

    首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...

  10. 【软件测试部署基础】yarn的认识

    1. yarn是什么 Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具.其主要是为了弥补 npm 的一些少量的缺陷而 ...