使GridView列可见后调整其大小



设置:

ListView与GridView,最初是隐藏的窗口加载,然后在某个用户操作时显示

目的:

可以设置GridView列的相对宽度。

问题:

我需要的可以通过使用宽度转换器来实现(类似于这里的答案),或者通过在ListView上添加Behavior(参见此解决方案)。这两种方法似乎都是有效的——但只适用于从一开始就呈现的控件。在我的例子中,当进行计算时,ActualWidth总是为0,当ListView可见时,这些计算不会重复。

所以,我猜,真正的问题这里是如何得到列的宽度被重新评估时,ListView的ActualWidth得到大于0

解决方案最好是在XAML级别,不涉及代码隐藏-但如果这是唯一的选择,也可以这样做;-)

有什么建议吗?

注:下面是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*宽度缩小,所以我看到(空)控件,当它应该被隐藏。

如何隐藏/显示ListView?这个问题似乎暗示你这样做是通过将Width属性设置为0(或非零来显示它)。相反,你应该尝试使用Visibility属性(设置为"collapse"来隐藏,或者设置为"Visible"来显示)。这将导致重新计算列的宽度。

更新:

根据你更新的问题,我建议看看这个解决方案:http://www.codeproject.com/KB/grid/ListView_layout_manager.aspx

我从这里得到它FWIW: WPF:扩展ListView's GridView的最后一列

相关内容

  • 没有找到相关文章

最新更新