Wpf 使GridView列可见后调整其大小
设置: 带有GridView的ListView,在加载窗口时最初隐藏,然后在某个用户操作时可见 目标: 能够设置GridView列的相对宽度 问题: 我所需要的可以通过在宽度上使用转换器(类似于答案)或在ListView上添加行为来实现(请参阅)。 这两种方法似乎都是有效的,但仅适用于从一开始就呈现的控件。 在我的例子中,当进行计算时,实际宽度始终为0,并且当ListView可见时,这些计算不会重复 因此,我想,这里真正的问题是当ListView的实际宽度大于0时,如何重新计算列的宽度。 解决方案最好是在XAML级别,而不涉及代码隐藏-但如果这是唯一的替代方案,也可以;-) 有什么建议吗 p.S.下面是Chris的问题,下面是ListView如何隐藏/显示的说明:它是另一个容器控件的子控件,托管在网格列中,该列的宽度由触发器控制Wpf 使GridView列可见后调整其大小,wpf,listview,gridview,column-width,Wpf,Listview,Gridview,Column Width,设置: 带有GridView的ListView,在加载窗口时最初隐藏,然后在某个用户操作时可见 目标: 能够设置GridView列的相对宽度 问题: 我所需要的可以通过在宽度上使用转换器(类似于答案)或在ListView上添加行为来实现(请参阅)。 这两种方法似乎都是有效的,但仅适用于从一开始就呈现的控件。 在我的例子中,当进行计算时,实际宽度始终为0,并且当ListView可见时,这些计算不会重复 因此,我想,这里真正的问题是当ListView的实际宽度大于0时,如何重新计算列的宽度。 解决方
<ColumnDefinition>
<ColumnDefinition.Style>
<Style>
<Setter Property="ColumnDefinition.Width" Value="4*"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OpenItems.Count}" Value="0">
<Setter Property="ColumnDefinition.Width" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
我尝试对ListView的容器本身应用一个类似的触发器(在折叠和可见之间操纵其可见性),但问题是列没有从原来的4*宽度收缩,所以我在应该隐藏时看到(空)控件。如何隐藏/显示ListView?这个问题似乎暗示您是通过将Width属性设置为0(或非零来显示它)来实现的。相反,您应该尝试使用该属性(设置为“折叠”以隐藏,或设置为“可见”以显示)。这将导致重新计算列的宽度 更新: 根据您最新的问题,我建议您查看以下解决方案:
我从这里得到它FWIW:Chris,我用更多细节更新了原始问题。希望这能让情况变得更清楚。。。