2013-09-25 136 views
0

我有元素的列表框:列表框擴展

<ListBox ItemsSource="{Binding collection}" > 
    <ListBox.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" /> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" /> 
    </ListBox.Resources> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Expander Header="{Binding stuff}"> 
     <!-- stuff --> 
     </Expander> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

當列表擴展的一個擴展,該列表會自動調整其高度。當擴展器變窄時(不確定是否這個詞),列表框的高度保持不變。效果是列表框的高度只能越來越大。有沒有辦法讓高度適應實際需要的空間?

順便說一下,我使用ListBox.Resources在列表框中選擇的項目不會突出顯示。我可以在風格中設置它,所以每個列表框都會表現如此?

+0

'ScrollViewer'中的ListBox是否? 'ListBox'高度不應該增長/縮小'ListBoxItem'應該。 –

+0

不,列表框就在那裏。也許它是ListboxItem,我怎麼能不同他們? –

+0

你使用分組嗎? –

回答

0

這是由於列表框的默認Itemspanel。嘗試更新itemspanel,如下所示:

 <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <DockPanel IsItemsHost="True" LastChildFill="False"/> 
     </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
+0

DockPanel水平顯示項目。我嘗試了StackPanel,但它並沒有改變一個東西,擴展它後只得到更大,並沒有回到較小的高度。 –