Wpf 使GridView列可见后调整其大小

Wpf 使GridView列可见后调整其大小,wpf,listview,gridview,column-width,Wpf,Listview,Gridview,Column Width,设置: 带有GridView的ListView,在加载窗口时最初隐藏,然后在某个用户操作时可见 目标: 能够设置GridView列的相对宽度 问题: 我所需要的可以通过在宽度上使用转换器(类似于答案)或在ListView上添加行为来实现(请参阅)。 这两种方法似乎都是有效的,但仅适用于从一开始就呈现的控件。 在我的例子中,当进行计算时,实际宽度始终为0,并且当ListView可见时,这些计算不会重复 因此,我想,这里真正的问题是当ListView的实际宽度大于0时,如何重新计算列的宽度。 解决方

设置:

带有GridView的ListView,在加载窗口时最初隐藏,然后在某个用户操作时可见

目标:

能够设置GridView列的相对宽度

问题:

我所需要的可以通过在宽度上使用转换器(类似于答案)或在ListView上添加行为来实现(请参阅)。 这两种方法似乎都是有效的,但仅适用于从一开始就呈现的控件。 在我的例子中,当进行计算时,实际宽度始终为0,并且当ListView可见时,这些计算不会重复

因此,我想,这里真正的问题是当ListView的实际宽度大于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*宽度收缩,所以我在应该隐藏时看到(空)控件。

如何隐藏/显示ListView?这个问题似乎暗示您是通过将Width属性设置为0(或非零来显示它)来实现的。相反,您应该尝试使用该属性(设置为“折叠”以隐藏,或设置为“可见”以显示)。这将导致重新计算列的宽度

更新:

根据您最新的问题,我建议您查看以下解决方案:


我从这里得到它FWIW:

Chris,我用更多细节更新了原始问题。希望这能让情况变得更清楚。。。