2009-11-19 19 views
2

是否可以限制listbox顯示的行數?例如,假設我有一個帶有100個項目的ItemSource,但我只希望我的列表框有10個項目。WPF:如何限制ListBox顯示的行數?

+0

你想要你的列表框只包含* 10項目或它適合*只有10項目,不得不滾動其餘的? – 2009-11-19 08:05:59

回答

-1

這爲我工作:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    // Set height of list box 
    this.listbox.Height = (this.listbox.ActualHeight/this.listbox.Items.Count) * 10; 
} 

裝上此給Loaded事件的控制(否則ActualHeight未設置)。

+1

理想情況下,您還應該從其ActualHeight中減去'listbox.BorderThickness'(頂部和底部) - 然後計算將會精確(在我的測量中)。 – Zeus 2016-03-17 02:08:16

1

如果你希望你的ListBox適合 10個項目,有滾動的休息,你可以簡單地設置的ListBoxItem S中的高度是ListBox由10

除以身高如果您想要允許ListBox調整大小,則必須在每個調整大小事件時動態調整ListBoxItem高度。

靜態例如:

<ListBox Height="500"> 
    <ListBox.Resources> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Height" Value="50"/> 
    </Style> 
    </ListBox.Resources> 

    <ListBoxItem>One</ListBoxItem> 
    <ListBoxItem>Two</ListBoxItem> 
    <ListBoxItem>Three</ListBoxItem> 
    <ListBoxItem>Four</ListBoxItem> 
    <ListBoxItem>Five</ListBoxItem> 
    <ListBoxItem>Six</ListBoxItem> 
    <ListBoxItem>Seven</ListBoxItem> 
    <ListBoxItem>Eight</ListBoxItem> 
    <ListBoxItem>Nine</ListBoxItem> 
    <ListBoxItem>Ten</ListBoxItem> 
    <ListBoxItem>Eleven</ListBoxItem> 
    <ListBoxItem>Twelve</ListBoxItem> 
    <ListBoxItem>Thirteen</ListBoxItem> 
    <ListBoxItem>Fourteen</ListBoxItem> 
    <ListBoxItem>Fifteen</ListBoxItem> 
    <!-- etc. --> 

</ListBox>