【问题标题】:Grid or Listview Row & column re-order WPFGrid 或 Listview 行和列重新排序 WPF
【发布时间】:2011-01-31 09:07:41
【问题描述】:

如何在wpf中重新排序grid和listview的行列。请讨论。谢谢

【问题讨论】:

  • Thomas 您的意思是您希望能够拖放列和行以使用鼠标水平(列)和垂直(行)移动它们?

标签: .net wpf listview datagrid


【解决方案1】:

可以在运行时通过拖放列标题对列进行重新排序。要以编程方式重新排序列,您需要修改 ListView.View 的 Columns 集合,例如:

GridView gv = listview.View as GridView;
GridViewColumn cd = gv.Columns[0];
gv.Columns.Remove(cd);
gv.Columns.Add(cd);

(假设 listview 是您的 ListView 并且它的 View 是一个至少有 2 列的 GridView)此代码会将第一列放在最后。

要以编程方式重新排序行,您可以修改 ListView 后面的 Collection(如果 ListView 没有排序,如果有,则不应更改行的顺序)。

要通过拖放对行重新排序,您需要编写一些代码来处理定义拖放操作的所有漂亮事件。示例和起点可以是this blog post

另外,如果您提供更多关于您想要什么的详细信息,我们可以提供更详细的答案。

【讨论】:

  • 列重新排序是可以的,但是行重新排序呢?我需要为此添加任何代码吗?
  • 是的,您需要添加代码。我还没有看到任何用于重新排序行的内置功能。但是可以通过处理鼠标拖动事件来实现,如我所指出的博客文章中所示。 Pavan Podila 也有一些可重复使用的 Drag'n'Drop 代码:blog.pixelingene.com/?cat=19 可能会对您有所帮助,但您需要编写代码来重新排序行。
【解决方案2】:

如果您想重新排序行并保存或使用新的行顺序,我建议您将名为 Index 或 RowIndex 的列添加到控件的基础数据源中,这样您只需更改拖放操作即可给定行的该列的值,在完成所有操作后,您可以存储或使用该值用于下一次渲染或您需要的任何其他内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2010-11-17
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多