Как заставить панель прокрутки ListBox работать, когда один элемент больше размера списка.WPF Listbox не может отображать содержимое, если один элемент выходит за пределы высоты элемента управления.
У меня есть ListBox с пользовательским ItemTemplate. Шаблон показывает сообщение и метку времени для заметок. Проблема в том, что оператор создает очень длинную заметку, полоса прокрутки ListBox не появляется и не позволит вам прокручивать вверх и вниз, чтобы увидеть всю заметку. Управление отлично работает для нескольких небольших заметок. Если вы добавите небольшую заметку после большой заметки, появится полоса прокрутки, и вы можете прокручивать вниз, но вы не можете увидеть всю первую заметку, только ту часть, которая была видна до и после нее, при нажатии на следующую заметку при прокрутке.
<ListBox Grid.Row="1" ItemsSource="{Binding Notes}" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Margin="1" Padding="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding CreatedDateTime, StringFormat={}{0:h:mm:ss tt}}" Margin="0,0,20,0"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Note}" TextWrapping="Wrap" FontSize="20"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Фотографии, которые помогут объяснить.
Итак, вы можете перейти к следующему элементу, но вы не можете прокручивать его в негабаритных деталях? –
Вы также можете отключить вертикальный ScrollBar, а затем поместить весь ListBox в ScrollViewer. – Clemens
(Ed Plunkett) Правильно. Я не могу прокручивать негабаритный элемент. (Клеменс 23). Это работает визуально. Однако я не могу прокручивать вверх/вниз с помощью колеса сенсорного экрана/мыши, если я не вишу над полосой прокрутки. Я думаю, что Listbox захватывает события прокрутки, а не распространяет их до контейнера ScrollViewer. –