WPF中ListView和DataGrid的区别?

Posted

技术标签:

【中文标题】WPF中ListView和DataGrid的区别?【英文标题】:Difference between ListView and DataGrid in WPF? 【发布时间】:2011-06-13 11:58:36 【问题描述】:

我必须从数据库中检索一些问题并将它们动态地显示在用户屏幕上。我还需要在网格视图的列中添加一些控件,基本上是一个问题和一个答案的输入框。

请建议我应该使用哪一个? ListViewDataGrid?

【问题讨论】:

我们说的是 WPF 还是 WinForms? Listview vs datagrid 的可能重复项 【参考方案1】:

嗯,在 WPF 中,ListViewDataGrid 之间的区别只是一个。编辑。您需要编辑使用DataGrid,否则使用ListView。您也可以在ListView 中进行编辑,但在DataGrid 中构建更容易。否则DataGrid能显示的,ListView就能显示。

DataGrid 支持而ListView 不支持的一件事(开箱即用)是自动列生成。

您可以阅读this article on CodeProject 以更好地了解DataGrid 以及ListViewDataGrid 之间的主要区别。

【讨论】:

肯定有更多不同。其中之一是列大小。在 datagrid 中,您可以拉伸列以填充网格大小,而在 listview 中则不能。据我所知,ListView 是在 WPF 3.5 中引入的,但后来被 DataGrid 取代,但出于兼容性原因,它仍然存在 和列排序。 值得注意的是,DataGrid 中的编辑可以使用 IsReadOnly="True" 关闭 有谁知道对大量行使用虚拟模式时哪个更快? ListView 不支持百分比列宽。【参考方案2】:

我不是 WPF 专家,但它只是控件本身的术语。

当考虑 ListView 时,想想 Windows 资源管理器,您可以在其中查看所有文件的窗格,这就是 ListView。

当考虑数据库时,它的通常(我说通常)是一个数据网格,将鼠标悬停在 gridview 标签上并阅读描述。

您想要一个网格视图的一些非常明显的原因是它可以直接编辑。您可以让您的用户在其中输入问题和答案。请注意,由于 ListViewItem 是一个内容控件,您也可以像 this article does 一样轻松自定义它。

也看看这个GridView tutorial 是否有帮助。

你没有给出太多关于你如何需要 UI 的描述,但你可以到处玩,做任何你喜欢的事情。

您甚至可以为 [问题 + 答案输入框] 制作用户控件。然后你可以使用 StackPanel(甚至是列表视图)来列出它们。

希望对您有所帮助。

【讨论】:

以上是关于WPF中ListView和DataGrid的区别?的主要内容,如果未能解决你的问题,请参考以下文章

WPF ListBox/ListView/DataGrid 列表滚动与虚拟化

WPF 实现 DataGrid/ListView 分页控件

WPF 实现 DataGrid/ListView 分页控件(转)

WPF 实现 DataGrid/ListView 分页控件(转)

WPF自定义控件与样式-列表控件DataGrid与ListView自定义样式

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