有没有人知道是否有一个选项可以像这样隐藏GridViewColumn:
<ListView.View>
<GridView>
<GridViewColumn Header="Test" IsVisible="{Binding Path=ColumnIsVisible}" />
</GridView>
<ListView.View>
多谢了!
编辑:为清晰起见
不幸的是,没有“IsVisible”属性。我正在寻找创建该属性的方法。
编辑:基于反馈的解决方案如下所示:
<GridViewColumn DisplayMemberBinding="{Binding Path=OptionColumn1Text}"
Width="{Binding Path=SelectedEntitiy.OptionColumn1Width}">
<GridViewColumnHeader Content="{Binding Path=SelectedEntitiy.OptionColumn1Header}" IsEnabled="{Binding Path=SelectedEntitiy.OptionColumn1Width, Converter={StaticResource widthToBool}}" />
</GridViewColumn>
public class WidthToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value > 0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
感谢所有人!
干杯
6条答案
按热度按时间cgfeq70w1#
编辑:反映修改后的问题。
创建一个0宽度的列怎么样?写一个布尔值到宽度IValueConverter,它接受一个ColumnIsVisible作为转换器参数?
比如:
a0zr77ik2#
Here是另一个基于将列宽设置为零的解决方案,我对它做了一些修改,它现在的工作方式如下:
1.使用bool-to-visibility转换器将头的可见性绑定到ViewModel的boolean属性
1.使用标题上的附加属性将列宽设置为零
下面是代码。
XAML:
布尔到可见性转换器:
附加行为网格视图行为。可折叠列:
wswtfjt73#
一个更简单的方法,仍然使用设置列宽为零的概念,但没有使用
IValueConverter
的副作用(用户仍然可以拖动列宽),是创建一个新的getter/setter,返回基于您的ColumnIsVisible
变量的宽度,然后绑定到该变量:将绑定设置为双向,如果用户试图将列拖宽,则将调用
OnPropertyChanged
并将宽度重置为0。不过,您可能必须使用绑定代理进行绑定。此外,每当更新ColumnIsVisible时,都要添加对OnPropertyChanged("ColumnWidth")
的调用:)q5iwbnjs4#
我已经将列设置为
width="0"
。现在该列看起来不可见。但我不知道它是否会影响其他任何东西。这可能是一个虚拟的解决方案,但目前它的工作。aurhwmvo5#
您可以通过编程方式将其删除:
如果您知道标头的名称:
或者,如果您知道标题的索引(如果标题名称可以更改,则效果更好,例如,如果您具有本地化应用程序):
u59ebvdq6#
如果Thumb.DragDelta可以解决问题,则使用
我在列表视图中使用它