【问题标题】:WPF datagrid cut a column (MVVM)WPF 数据网格切列(MVVM)
【发布时间】:2010-10-01 07:21:56
【问题描述】:

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

如果是,是否有任何内置支持?
如果没有,我该怎么做?一个示例插图会非常好。

【问题讨论】:

    标签: .net wpf datagrid


    【解决方案1】:

    您需要两个功能:

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

    尽管您使用的是 MVVM,但这相当容易做到,因为它可以在视图中处理。没错,VM 不需要知道这方面的任何信息——它纯粹是与视图相关的事情,与 VM 所持有的数据无关。

    我不会给出示例代码,您可以自己解决。您的 UI 可以像右键单击列中的上下文菜单一样简单,并带有“隐藏此列”选项。当然,这是一个不可逆转的单向过程,但也许这就是您想要的,并且该列会一直隐藏,直到用户下次运行应用程序。

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

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 2011-10-23
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2014-09-04
      • 2013-04-15
      相关资源
      最近更新 更多