WPF: Как ограничить количество строк, отображаемых в ListBox? - PullRequest
2 голосов
/ 19 ноября 2009

Можно ли ограничить количество строк, отображаемых в списке? Например. допустим, у меня есть ItemSource с 100 предметами, но я хочу, чтобы мой список имел высоту только 10 предметов.

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Если вы хотите, чтобы ваши 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>
0 голосов
/ 18 апреля 2013

Это сработало для меня:

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 не установлено).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...