WPF中的网格或列表视图行和列重新排序

3
如何在WPF中重新排列网格和列表视图的行和列。请讨论。谢谢。

Thomas,您是指您希望能够使用鼠标拖放列和行来水平移动(列)和垂直移动(行)它们吗? - Davide Piras
2个回答

4

在运行时,可以通过拖放列标题来重新排序列。如果需要以编程方式重新排序列,则需要修改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后面的集合(如果ListView没有排序,则不应更改行的顺序)。

要通过拖放重新排序行,您需要编写一些代码来处理定义拖放操作的所有美丽事件。一个示例和起点可以是这篇博客文章

此外,如果您提供更多关于您想要的确切内容的详细信息,我们可以提供更详细的答案。


列重新排序没问题,但是行怎么办?我需要添加任何代码吗? - Thomas
是的,您需要添加代码。我没有看到任何内置的重新排序行的功能。但是,可以通过处理鼠标拖动事件来实现,如我指出的博客文章所示。Pavan Podila在这里也有一些可重用的拖放代码:http://blog.pixelingene.com/?cat=19,可能会对您有所帮助,但是您需要编写重新排序行的代码。 - Andrei Pana

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接