栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

WPF笔记汇总之ListView控件

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WPF笔记汇总之ListView控件

WPF控件之ListView控件

紧接上一篇《WPF笔记汇总之列表类控件与DataGrid控件》,这篇主要总结WPF中最复杂的控件之一,ListView控件,它类似ListBox和DataGrid,它可以实现上面两个控件的功能,但自定义制定的方式更加自由。

文章目录
    • WPF控件之ListView控件
      • 1 ListView简单使用
      • 2 ListView数据绑定和ItemTemplate
      • 3 GridView模板
      • 4 数据对齐与分组展示
      • 5 排序与过滤

1 ListView简单使用

默认的ListView实际上只是一个ListBox,具有不同的选择模式,ListViewItem派生自ContentControl类,所以可以指定WPF控件作为其内容。



	A ListView
	with several
	items



	
		
			
			Green
		
	
	
		
			
			Blue
		
	
	
		
			
			Red
		
	

2 ListView数据绑定和ItemTemplate





	
		
			
				
				
				
				
				
				
				
				
			
		
	

public MainWindow()
{
	InitializeComponent();

	List items = new List();
	items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
	items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
	items.Add(new User() { Name = "Sammy Doe", Age = 13, Mail = "sammy.doe@gmail.com" });
	lvDataBinding.ItemsSource = items;
	lvDataBinding2.ItemsSource = items;
}

public class User
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Mail { get; set; }
	public override string ToString()
	{
		return this.Name + ", " + this.Age + " years old";
	}
}

3 GridView模板

WPF内置了一个专门的视图:GridView,通过使用GridView,您可以在ListView中展示多列数据。Header属性用于指定列显示的文本,DisplayMemberBinding属性将值绑定到自定义数据类的属性。此外指定CellTemplate属性,可以完全控制内容在特定列单元格中的呈现方式。



	
		
			
			
			
		
	




	
		
			
			
			
				
					
						
					
				
			
		
	

public MainWindow()
{
	InitializeComponent();

	List items = new List();
	items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
	items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
	items.Add(new User() { Name = "Sammy Doe", Age = 13, Mail = "sammy.doe@gmail.com" });
	lvUsers.ItemsSource = items;
	lvUsers2.ItemsSource = items;
}

public class User
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Mail { get; set; }
}

4 数据对齐与分组展示

Horizo​​ntalAlignment属性负责设置对齐方式。默认为Center,可以将其更改为Left等。CollectionView包含许多可能性,包括对项目进行分组的功能。通过向视图的GroupDescriptions添加所谓的PropertyGroupDescription来实现分组。



	
		
	
	
		
			
			
			
		
	



	
		
			
			
		
	

	
		
			
				
					
				
			
		
	




	
		
			
			
		
	
	
		
			
				
			
		
	


public MainWindow()
{
	InitializeComponent();

	List items = new List();
	items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });
	items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });
	items.Add(new User() { Name = "Sammy Doe", Age = 13, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });
	lvUsers.ItemsSource = items;
	lvUsers2.ItemsSource = items;
	lvUsers3.ItemsSource = items;

	CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers2.ItemsSource);
	PropertyGroupDescription groupDescription = new PropertyGroupDescription("Sex");
	view.GroupDescriptions.Add(groupDescription);
}


public enum SexType { Male, Female };

public class User
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Mail { get; set; }
	public SexType Sex { get; set; }
}

5 排序与过滤


	
		
			
			
		
	

public MainWindow()
{
	InitializeComponent();
	List items = new List();
	items.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com", Sex = SexType.Male });
	items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com", Sex = SexType.Female });
	items.Add(new User() { Name = "Sammy Doe", Age = 13, Mail = "sammy.doe@gmail.com", Sex = SexType.Male });
	items.Add(new User() { Name = "Mike", Age = 13, Mail = "mike.doe@gmail.com", Sex = SexType.Male });
	lvUsers.ItemsSource = items;
	
	// 先使用年龄进行排序,当年龄相同时,使用名称排序。
	CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);
	view.SortDescriptions.Add(new SortDescription("Age", ListSortDirection.Ascending));
	view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
	// 过滤
	view.Filter = UserFilter;

}

private bool UserFilter(object item)
{
	if (String.IsNullOrEmpty(txtFilter.Text))
		return true;
	else
		return ((item as User).Name.IndexOf(txtFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0);
}

private void txtFilter_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
	CollectionViewSource.GetDefaultView(lvUsers.ItemsSource).Refresh();
}

public enum SexType { Male, Female };
public class User
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Mail { get; set; }
	public SexType Sex { get; set; }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号