WPF listview如何在行列之间添加分割线,类似DataGrid的效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF listview如何在行列之间添加分割线,类似DataGrid的效果相关的知识,希望对你有一定的参考价值。

参考技术A <ListView>
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Black" BorderThickness="0,0,0,1">
<TextBlock Text="your datas of each item "/>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>追问

这个……我肯定不是仅仅实现这个效果。ListView的View的Gridview,让每一项都加上表格,而且要和表头对其的

追答

你在listview 的headTemplate 里面加入一个 Grid 定义好Grid里面的每一列的宽度。
在ListView的ItemTemplate中定义一个Grid让它每一列的宽度和HeadTemplate里面的Grid一样将就可以了。

对于这一块我嫌比较麻烦,所以自己开发了一个可视化控件(可以在blend里面编辑和绑定数据),但是没有写相关的文档(仅仅是自己用也足够),所以这里也就不发出来了。

参考技术B 你要添加分割线的话为何不直接使用datagrid控件呢?追问

我在里面加了树形的展开。用DataGrid弄不了。TreeView和ListView合起来的,但是这个想显示下表格真的弄不出来。

追答

树形的展开可以在datagrid弄的啊。datagrid既可以有分组的功能还有展示RowDetails的功能,比listview功能强大,修改外观也方便很多。

追问

那个分组我试了,不是很好看,而且我要和后面的一个图形交互。用datagrid不是很方便。我再试试。谢谢

本回答被提问者采纳

wpf ListView 中checkBox全选 如何实现?

参考技术A 提供两种方法:
1.如果是手动添加数据,只能通过循环实现
2.如果是根据类实现的数据绑定,只要在类中添加一个bool变量,默认值为true,绑定到checkbox就ok。这种情况下可以通过让类继承INotifyPropertyChanged 类的列表继承ObservableCollection实现。
附上一段代码,看不懂百度HI我。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.ObjectModel;

namespace AddrBook

public class People : INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propName)

if (PropertyChanged != null)

PropertyChanged(this, new PropertyChangedEventArgs(propName));


private string name = string.Empty;
public string Name

get return name;
set

if (name == value)

return;

else

name = value;
NotifyPropertyChanged("Name");




private string phonenum = string.Empty;
public string PhoneNum

get return phonenum;
set

if (phonenum == value)

return;

else

phonenum = value;
NotifyPropertyChanged("PhoneNum");




private bool? ischecked = false;

public bool? IsChecked

get return ischecked;
set

if (ischecked == value)

return;

else

ischecked = value;
NotifyPropertyChanged("IsChecked");






public class Person : ObservableCollection<People>
public class Group : INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propName)

if (PropertyChanged != null)

PropertyChanged(this, new PropertyChangedEventArgs(propName));



private string groupname;
public string GroupName

get return groupname;
set

if (groupname == value)

return;

else

groupname = value;
NotifyPropertyChanged("GroupName");




private Person groupmember = new Person();

public Person GroupMember

get return groupmember;
set

if (groupmember == value)

return;

else

groupmember = value;
NotifyPropertyChanged("GroupMember");





private int membercount = 0;
public int MemberCount

get return membercount;
set

if (membercount == value)

return;

else

membercount = value;
NotifyPropertyChanged("MemberCount");




private bool? ischecked = false;
public bool? IsChecked

get return ischecked;
set

if (ischecked == value)

return;

else

ischecked = value;
NotifyPropertyChanged("IsChecked");
NotifyMember(ischecked);




private void NotifyMember(bool? ischeck)

if (groupmember.Count > 0)

foreach (People p in groupmember)

p.IsChecked = ischeck;




public class GroupList : ObservableCollection<Group>

还是给你整个文件吧追问

你把你那个发给我嘛。 我QQ1078669816,麻烦了

追答

这个真不可以。这可是我们要做的项目。功能代码可以给你。整个程序是不行的。有什么不懂的可以问我。我们公司封QQ。只能百度Hi聊

以上是关于WPF listview如何在行列之间添加分割线,类似DataGrid的效果的主要内容,如果未能解决你的问题,请参考以下文章

C# WPF Listview 如何设置某一行的颜色

如何在 WPF 中将项目添加到 ListView

android listview每条记录下都有一条分隔线,如何去掉分割线

WPF ListView - 如何以编程方式添加项目?

WPF学习第八章 Grid面板

如何在WPF中的listview中的Columnheader和Data行之间删除分隔符边框行