WPF - путаница в ScrollView

Я новичок в WPF, и ScrollViewer меня расстраивает. Либо я просто не «понимаю» это, либо это ограниченный контроль.

Вот мои разочарования:

  1. Плохая горизонтальная прокрутка Горизонтальная полоса прокрутки видна только в нижней части списка (мне нужно прокрутить вниз, чтобы увидеть ее)

  2. Плохие границы. В моем ScrollViewer есть ListBox. Когда я запускаю нижнюю часть списка, у нее нет границы, а когда я прокручиваю вниз, верхняя граница (строка) списка исчезает. Я могу это понять, но попытки установить BorderThickness или BorderBrush для ScrollViewer не приводят к никаким изменениям (я хотел использовать границу ScrollViewer, чтобы сохранить постоянное поле вокруг содержимого списка, как и большинство списков в кибер-мире).

  3. Плохая обработка коротких списков. Когда элементы в списке не достигают конца, ScrollViewer сохраняет полосу прокрутки и просто размывает ее. Почему бы не освободить место и не удалить его?

Некоторые из них могут показаться мелкими (и это так). Но пользователи ожидают определенного внешнего вида от своих приложений, и WPF затрудняет получение этого из коробки.

Если вы знаете способ исправить что-либо из этого, я был бы рад получить ответ. Если есть лучший способ справиться с прокруткой, чем использование ScrollViewer, это тоже приветствуется.


person Vaccano    schedule 02.12.2009    source источник


Ответы (1)


  1. Может быть, вы видите полосу прокрутки внутри списка, а не полосу прокрутки в ScrollViewer? Попробуйте установить <ScrollViewer ... HorizontalScrollBarVisibility="Auto"> (по умолчанию Hidden, что означает, что горизонтальная полоса прокрутки никогда не отображается; также попробуйте "Видимый" для отладки)

  2. Можно ли поставить <Border> вокруг ScrollViewer?

  3. VerticalScrollBarVisibility имеет значение по умолчанию Visible. Если вы хотите, чтобы полоса прокрутки исчезла, когда в этом нет необходимости, попробуйте <ScrollViewer ... VerticalScrollBarVisibility="Auto">.

person Heinzi    schedule 02.12.2009
comment
Я добавил ‹Border BorderThickness = 1› .... ‹/Border› вокруг моего ScrollViewer, и не повезло. По-прежнему есть те же проблемы. - person Vaccano; 03.12.2009
comment
Оказывается, цвет по умолчанию для ‹Border› ясен. Если я изменил цвет, все заработало. Спасибо за помощь. - person Vaccano; 03.12.2009
comment
VerticalScrolBarVisibility = Auto сделал это за меня. Ты только что спас меня от небольшой головной боли - person Koen Van Looveren; 26.01.2017
comment
Это тоже избавило меня от головной боли, настройка verticalScrolBarVisibility="Auto" сделала то же самое. - person zaggler; 01.06.2017