的ListView与被加载的窗口时最初被隐藏,并且然后在特定用户动作可见的GridView。
目的:
可以设置GridView的列的相对宽度。
问题:
我需要可以通过使用在宽度(类似于答案here东西)转换器来实现,或者通过在ListView控件添加行为(见this solution)。 这两种方法似乎都是有效的 - 但仅限于从早期开始渲染的控件。 在我的情况下,当进行计算时,ActualWidth始终为0,并且在ListView变为可见时不会重复这些计算。
所以,我想,这里的真正问题是如何获得列的宽度进行重新评估的时候ListView控件的ActualWidth获取大于0
该解决方案将最好的XAML级别,而不涉及代码隐藏 - 但也会这样做,如果这是唯一的选择;-)
有什么建议吗?
P.S.以下是Chris的问题,下面是关于如何隐藏/显示ListView的说明:它是另一个容器控件的子元素,托管在网格列中,该列的宽度由触发器控制。
<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 *宽度收缩,所以当它应该被隐藏时,我会看到(空)控件。
克里斯,我有更多更新的原题细节。 希望这可以揭示更多的情况...... – Alex