Список внутри вычислений высоты ScrollViewer - PullRequest
1 голос
/ 12 апреля 2011

Когда я помещаю ListBox в ScrollViewer, если я не определяю атрибут Height для ListBox, он не прокручивается (за исключением скачков вверх и вниз), поэтому элементы за пределами экрана недоступны. Если я установлю атрибут высоты в ListBox на фактическую высоту, которую он занимает на экране, он прекрасно прокручивается. Если я не получаю высоту правильно, он не прокручивается должным образом, например, Возможно, я не смогу добраться до нижних элементов в списке.

При размещении других элементов в одиночном столбце LayoutRoot Grid выше и ниже ScrollViewer / ListBox я устанавливаю RowDefinition.Height = "Auto" во всех строках, кроме ScrollViewer, который получает "*". Сетка, кажется, правильно распределить пространство соответственно. За исключением того, что я априори не знаю, сколько места занимает ScrollViewer / ListBox.

Часть A: Зачем мне устанавливать Высота в ListBox, не зависит ли его (виртуальная) высота от количества элементов?

Часть B: Похоже, мне нужно вручную разметить высоту строки сетки, а затем заново сделать их вручную, если требуется изменение размера шрифта или другого стиля. Это тот случай? Такой подход кажется фальшивым.

1 Ответ

4 голосов
/ 12 апреля 2011

Ваши проблемы вызваны тем, что у вас есть ListBox внутри ScrollViewer. Не делай этого.

Список содержит внутренний ScrollViewer и (обычно) увеличивается до доступного пространства.

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

Дайте нам знать, что вы пытаетесь сделать. Есть лучший способ сделать это.

...