2011-01-06 113 views
15

我在WPF和Windows窗体方面有经验,但是只使用Windows窗体DataGridView而不是WPF DataGrid(它只包含在.Net 4中,或者可以从Codeplex添加到.Net 3.5中, 我明白)。我即将开发一个应用程序使用这些控件之一大量的数据,并有读取性能是一个WPF DataGrid的问题,所以我可以坚持到Windows窗体DataGridView ..是这种情况?WPF DataGrid与Windows窗体DataGridView

我不想使用第三方控件。

Windows窗体DataGridView是否为WPF DataGrid提供了大量数据的显着性能?

如果我要使用WPF,我宁愿使用.net 3.5S SP1,除非.Net 4中的DataGrid明显更好?

另外我想使用DataTable的,我觉得更适合于Windows窗体..

回答

17

为了您的需要,除非您有其他要求引导您朝向WPF,否则我会推荐使用WinForms DataGridView。

WPF DataGrid通过Codeplex提供,作为'带外'版本,即这些控件最终将进入WPF API,但是会尽早在codeplex上发布,以便我们可以从中受益在下一个主要的.NET发行版之前。您可以使用.NET 4.0或codeplex DataGrid。据我所知他们是一样的。 WPF DataGrid与DataTables相当不错。见的例子在我的下面的文章:

http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx

然而,WPF框架和视觉效果比的WinForms稍微重量级的。此外,WinForms DataGridView非常成熟。

对于非常大的数据集,所述的WinForms DataGridView中具有一个特点,那就是不存在于WPF数据网格,这对于非常大的网格(百万行)是至关重要的,这是一个虚拟模式:

http://msdn.microsoft.com/en-us/library/ms171622.aspx

也被称为数据虚拟化。在这种模式下,您告诉网格数据中有多少行,然后处理事件以填充单元格。这比例非常好。我已经将它用于大规模和复杂的网格。

WPF具有UI虚拟化,这是UI控制回收的一种形式,但不是数据虚拟化。

希望有所帮助。

+0

WPF DataGrid相比之下令人震惊。 – 2011-11-28 20:53:40

+0

我应该补充一点:我已经使用了WPF DataGrid来处理大数据 - 在.Net 4.0中,它可以,但速度较慢,但​​延迟加载 - 只有在滚动时才查询数据 - 如果您有高规格的机器,它有帮助! – markmnl 2012-09-17 00:29:13

-3

WPF的DataGrid更多更快,我觉得ADO。但是,当我尝试使用WPF DataGrid大量数据(大量列(大约40-50)和行)与它的工作缓慢(水平滚动)的样式。来自第三方控件的DataGrid工作得更好(我使用Infragistics XamDataGrid)。

-2

检查WPF的Xceed数据网格,它比WPF DataGrid更好,但这是第三方,但值得。

1

对于任何初学者(比如我)做出这个决定,WindowsForms非常容易使用。当然,还有很多其他原因可能会影响您的决定,但如果您的项目主要是DataGrid,那么WinForms就是要走的路。

0

如果您首先填充DataGrid的ItemsSource,则可以使用DataGrid WPF作为DataGridView。

MyDataGrid.ItemsSource = MySource; 
MyDataGrid.Columns[0].Width = 300; 
MyDataGrid.Columns[0].Header = "MyName";