WPF DataGrid与ListView性能对比与场景选择
2015 年 3 月 16 日
开门见山的说
性能对比:
在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方)
DataGrid渲染10列50行随机字符280ms
ListView渲染10列50行随机字符80ms
场景选择:
ListView只生成需要展示的数据类型的控件,渲染相对DataGrid要快很多
DataGrid会生成编辑两种状态单元格(编辑与非编辑),如非必要不推荐使用(编辑单元格WPF硬伤/(ㄒoㄒ)/~~)
UI效果图:
Code:
XAML
后台
using System; using System.Collections.Generic; using System.Diagnostics; using System.Windows; namespace WPFDemo { ////// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); view = new MainWindowView(); view.DgList = new System.Collections.ObjectModel.ObservableCollection(); this.DataContext = view; InitData(); } MainWindowView view; private void InitData() { var list = new List(); Random rd = new Random(); for (int i = 0; i < 50; i++) { var item = new DgModel(); item.F1 = rd.Next().ToString(); item.F2 = rd.Next().ToString(); item.F3 = rd.Next().ToString(); item.F4 = rd.Next().ToString(); item.F5 = rd.Next().ToString(); item.F6 = rd.Next().ToString(); item.F7 = rd.Next().ToString(); item.F8 = rd.Next().ToString(); item.F9 = rd.Next().ToString(); item.F10 = rd.Next().ToString(); list.Add(item); } Stopwatch ms = new Stopwatch(); ms.Restart(); view.DgList = new System.Collections.ObjectModel.ObservableCollection(list); ms.Stop(); view.DgMs = ms.ElapsedMilliseconds.ToString(); ms.Restart(); view.LvList = new System.Collections.ObjectModel.ObservableCollection(list); ms.Stop(); view.LvMs = ms.ElapsedMilliseconds.ToString(); } private void Button_Click(object sender, RoutedEventArgs e) { InitData(); } } }
相关回答:
ListView和ListBox的区别?(ListView是数据表格,ListBox是类似Tree的单选列表)
博主使用的是第三方开源控件HandyControl(强烈安利)
博客园空间不足,Demo加群下载
#感谢您访问本站# #本文转载自互联网,若侵权,请联系删除,谢谢!657271#qq.com#