【发布时间】:2010-10-01 07:21:56
【问题描述】:
在 WPF 数据网格中,是否可以允许用户剪切或删除列?
如果是,是否有任何内置支持?
如果没有,我该怎么做?一个示例插图会非常好。
【问题讨论】:
在 WPF 数据网格中,是否可以允许用户剪切或删除列?
如果是,是否有任何内置支持?
如果没有,我该怎么做?一个示例插图会非常好。
【问题讨论】:
您需要两个功能:
尽管您使用的是 MVVM,但这相当容易做到,因为它可以在视图中处理。没错,VM 不需要知道这方面的任何信息——它纯粹是与视图相关的事情,与 VM 所持有的数据无关。
我不会给出示例代码,您可以自己解决。您的 UI 可以像右键单击列中的上下文菜单一样简单,并带有“隐藏此列”选项。当然,这是一个不可逆转的单向过程,但也许这就是您想要的,并且该列会一直隐藏,直到用户下次运行应用程序。
另一个选项是弹出一个模式子窗口,其中包含足够的信息,供用户选择他们想要显示或隐藏的列。再次,这可以从上下文菜单项或其他一些 UI 操作触发。此时,您可以枚举网格列,创建包含每列信息的数据对象列表(例如名称或列标题及其可见性),创建适当控件的实例以显示此信息(这是视图),将数据对象分配给它(ViewModel),然后将视图插入模态子窗口。关闭窗口后,您可以取回该数据,并根据用户的选择对其进行迭代,显示或隐藏列。请记住,这仍然可能发生在原始视图后面的代码中。如果您使用的是 Prism 之类的区域或 UI 管理器,那么我所说的子窗口可以通过它进行管理。
【讨论】: