WPF隐藏ListView中GridView的列
有需求要根据某变量的值将ListView中GridView的某一个GridViewColumn做隐藏设置,经过一番思考,总结了两种方法,但都需要对ListView中的GridView以及每一个GridViewColumn做命名:
1 | <ListView x:Name="lvTest" SelectionMode="Single"> |
方法一:设置列宽
这种方法相对简单,如果没有特殊条件限制,可以直接设置某一列的width=0
,如:
gvcName.Width = 0
这样做虽然看上去这一列被隐藏了,但只要在ListView的header中拖动列改变其列宽,这些被隐藏的列还是可以被发现的,处于安全考虑,这种做法不值得提倡。
方法二:移除列
假设需要隐藏姓名列,那么可以使用gvTest.Columns.RemoveAt(0)
或者gvTest.Columns.Remove(gvcName)
。这样做确确实实让某一些彻底看不到了,但同时也会带来另一个问题,如果需要让某个被隐藏的列变成可见状态要怎么做?
这就要求我们在做remove
命令前,先把这一列保存起来,不仅要保存这一列,还需要保存它的index:
1 | int index = gvTest.Columns.IndexOf(gvcName); |
如果需要显示回这一列,那么就:
1 | gvTest.Columns.Insert(index,gvc); |
WPF隐藏ListView中GridView的列