设置:
带有GridView的ListView,在加载窗口时最初隐藏,然后在某个用户操作时可见。
目标:
能够设置GridView列的相对宽度。
问题:
我需要的是通过在宽度上使用转换器(类似于答案here),或者在ListView上添加行为(请参阅this solution)。 这两种方法似乎都是有效的 - 但仅适用于从早期开始渲染的控件。 在我的情况下,当进行计算时,ActualWidth始终为0,并且当ListView可见时,不会重复这些计算。
所以,我猜,真正的问题是当ListView的ActualWidth大于0时如何重新评估列的宽度。
解决方案最好是在XAML级别,不涉及代码隐藏 - 但如果这是唯一的选择,那也会这样做; - )
有什么建议吗?
PS 根据下面的Chris的问题,这里有一个关于如何隐藏/显示ListView的说明:它是另一个容器控件的子代,托管在Grid列中,并且该列的宽度被操纵通过触发器。
<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 *宽度缩小,所以我看到(空)控件何时被隐藏。
答案 0 :(得分:0)
你是如何隐藏/显示ListView的?这个问题似乎暗示你是通过将Width属性设置为0(或非零来显示它)来实现的。相反,您应该尝试使用Visibility属性(设置为“Collapsed”隐藏,或“Visible”显示)。这应该会重新评估列的宽度。
更新:
根据您更新的问题,我建议您查看此解决方案:http://www.codeproject.com/KB/grid/ListView_layout_manager.aspx
我从这里得到了FWIW:WPF : Extend last column of ListView's GridView