WPF ListView становится шире в ответ на изменение размера столбца, но не сжимается.

В следующем .NET 3.5 XAML, если вы перетащите ширину столбца «День» шире, 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>

person Eric    schedule 13.07.2009    source источник
comment
Что вы подразумеваете под удалением раздела ListView.ItemsSource? Тогда ListView пуст, верно? Сводит меня с ума, я не знаю, как заставить его уменьшиться.   -  person Martin Konicek    schedule 22.07.2009


Ответы (1)


В общем, все элементы управления WPF ItemsControl предназначены только для роста, что означает, что мы выполняем начальный проход макета, и впоследствии размер элемента управления будет увеличиваться только при изменении содержимого. Причина, по которой мы не уменьшаем размер по умолчанию, заключается в том, что это потребует дорогостоящего измерения и организации прохода, что отрицательно скажется на производительности.

ссылка: поток codeplex

person kenwarner    schedule 31.07.2009
comment
Так что, если это негативно повлияет на производительность. Это может привести к непригодному для использования пользовательскому интерфейсу. Хотя бы дайте возможность уменьшиться. - person paparazzo; 14.12.2013