WPF datagrid剪切列(MVVM)

时间:2010-10-01 07:21:56

标签: .net wpf datagrid

在WPF数据网格中,是否可以允许用户剪切或删除列?

如果是,是否有任何内置支持? 如果不是,我该怎么办?样本插图将非常好。

1 个答案:

答案 0 :(得分:0)

您需要两项功能:

  • 一个供用户选择/取消选择他们希望在网格中看到的列
  • 根据该信息采取行动并实际隐藏/显示受影响的列

尽管您使用的是MVVM,但这很容易实现,因为它可以在View中处理。这是正确的人,VM不需要知道任何关于此的事情 - 它纯粹是与视图相关的事情,与VM保存的数据无关。

我不打算提供示例代码,您可以自己解决这个问题。在右键单击列时,您的UI可以像上下文菜单一样简单,并带有“隐藏此列”选项。当然,这是一个不可逆转的单向过程,但也许这就是你想要的所有,并且列保持隐藏,直到用户下次运行应用程序。

另一个选项是弹出一个模态子窗口,其中包含足够的信息,供用户选择要显示或隐藏的列。再次,这可以从上下文菜单项或一些其他UI动作触发。此时,您可以枚举网格列,创建包含每列信息的数据对象列表(例如名称或列标题及其可见性),创建相应控件的实例以显示此信息(这是视图),将数据对象分配给它(ViewModel),然后将View插入到模态子窗口中。关闭窗口后,您可以获取该数据,并根据用户的选择迭代显示或隐藏列。请记住,这仍然可以在原始视图后面的代码中发生。如果您正在使用像Prism这样的区域或UI管理器,那么我所谈论的子窗口可以通过它进行管理。