2009-09-03 4 views
0

Я пытаюсь изменить размер ListView в WPF. Я хочу выяснить, как заставить ListView сжать ее ширину, чтобы она соответствовала ширине ее столбцов. У меня есть ListView, что я связываю с помощью окна свойств и добавить некоторые GridViewColumn S так:WPF ListView изменение размера безумия

   <ListView ItemsSource="{Binding MyCollection}"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="Name" Width={Binding NameWidth} DisplayMemberBinding="{Binding Name}"/> 
          <GridViewColumn Header="Fee" DisplayMemberBinding="{Binding Fee}"/> 

         </GridView> 
        </ListView.View> 
       </ListView> 

Я связываю ширину колонки, так что я могу скрыть/отобразить столбец. Когда я раскрываю колонку, ListView растет, чтобы разместить новую ширину. Но когда я снова скрываю столбец, ширина ListView не уменьшается.

Я попытался подкласс ListView и вызвать некоторые команды, как

InvalidateArrange(), InvalidateMeasure(), InvalidateVisual(). Но ни один из них не приводит к сжатию ListView.

Если я перезаряжаю коллекцию до ListView, она сжимается, чтобы соответствовать. Но я думаю, что это не изящный, не правильный способ сделать это. Я путешествовал через Рефлектор, чтобы оказаться в трясине путаницы. Может ли кто-нибудь дать мне некоторое представление?

ответ

0

Ваш ListView, скорее всего, определяется его родительским контейнером, а не его содержимым. Например, Grid, StackPanel, DockPanel, Border и т. Д. Вне вашего ListView могут растягивать ListView, чтобы заполнить его ширину.

Если это не проблема проблемы, пожалуйста, протестируйте ListView в пустое окно с помощью корневой WrapPanel, чтобы отделить любой другой окружающий XAML от вашего управления и опубликовать весь XAML для этого окна.

Смежные вопросы