WPF ListView响应调整大小列而变得更宽,但不会收缩

时间:2009-07-13 23:52:37

标签: .net wpf listview resize

在下面的.NET 3.5 XAML中,如果将“Day”列的列宽拉得更宽,ListView会很好地增长以解决这个问题。但是,如果然后将列宽度拖得更窄,则表格保持原样大小。

同样的问题也存在于垂直方向。如果你的某些列有自动换行,那么表格会更高,以便处理这个,但不会收缩。

这是真正的傻瓜部分。如果删除ListView.ItemsSource部分,则ListView将按需运行!为什么这会影响它呢?

有什么想法吗?

<Window x:Class="TestWpfTables.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:p="clr-namespace:System;assembly=mscorlib"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ListView HorizontalAlignment="Left">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Day}" Header="Day" />
                </GridView>
            </ListView.View>
            <ListView.ItemsSource>
                <s:ArrayList>
                    <p:DateTime>1990/1/1 12:22:02</p:DateTime>
                    <p:DateTime>1990/1/2 13:2:01</p:DateTime>
                    <p:DateTime>1990/1/5 2:1:6</p:DateTime>
                </s:ArrayList>
            </ListView.ItemsSource>
        </ListView>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:3)

  

通常,所有WPF ItemsControl都是“仅增长”,这意味着我们执行初始布局传递,然后控件只会在内容更改时调整大小。我们默认不调整大小的原因是它需要昂贵的测量并安排通过,这会对性能产生负面影响

ref: codeplex thread