【问题标题】:WPF ListView grows wider in response to resizing column, but does not shrink backWPF ListView 响应调整列的大小而变宽,但不会缩回
【发布时间】:2009-07-13 23:52:36
【问题描述】:

在以下 .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>

【问题讨论】:

  • 删除 ListView.ItemsSource 部分是什么意思?那么 ListView 是空的,对吧?快把我逼疯了,也不知道怎么缩小。

标签: .net wpf listview resize


【解决方案1】:

一般来说,所有 WPF ItemsControls 都是“仅增长的”,这意味着我们执行初始布局传递,随后控件只会在内容发生变化时调整大小。我们默认不缩小尺寸的原因是它需要昂贵的度量和排列通道,这会对性能产生负面影响

ref: codeplex thread

【讨论】:

  • 如果它对性能产生负面影响怎么办。它可能会导致 UI 无法使用。至少可以选择缩小。
猜你喜欢
  • 2011-05-10
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 2014-12-31
  • 2011-02-13
  • 1970-01-01
  • 2010-12-24
  • 2017-09-04
相关资源
最近更新 更多