У меня есть ListBox, проблема, с которой я сталкиваюсь, пытается получить действительные значения из объекта IScrollInfo
.Получение действительных значений из ScrollInfo в ListBox
Я знаю, что от установления MaxHeight на ListBox до 150, что ViewportHeight должна быть около этого размера и полный рост в два раза больше, так что ExtentHeight должно быть около 300.
я получаю следующие значения из:
_scrollInfo.ExtentHeight = 13
_scrollInfo.ViewportHeight = 7
_scrollInfo.VerticalOffset = varying but 1-6
значения от:
UIElement scrollable = _scrollInfo as UIElement;
себе чтобы они были правильными.
scrollable.RenderSize.Height = 146
, что примерно верно.
Что мне интересно, о том:
Когда мой контроль ListBox сначала загружается он привязан к пустой ObservableCollection
. Только после этого элементы будут добавлены. Может ли быть, что объект IScrollInfo сохраняет эти начальные значения, когда ListBox был пуст?
Другое дело, что объект IScrollInfo является VirtualizingStackPanel
, может ли это иметь какое-либо отношение к этому вопросу?
[EDIT]
попытался изменить VirtualizingStackPanel
к StackPanel
, однако я по-прежнему получать те же результаты.
'VirtualizingStackPanel' обычно является хорошим преступником. Это должно быть просто проверить, просто сделав его другим контейнером. В чем именно вы пытаетесь использовать эту информацию? – Taekahn
Я загружаю свой ObservableCollection с помощью CheckedListItem, который удерживает ли объект DataGridColumn видимым или нет. С помощью операций перетаскивания столбцов также можно переупорядочить. Я также добавил возможность автоматического прокрутки ListBox при перетаскивании.Это автоматический прокрутки, который использует эту информацию. – Hank
Когда вы говорите «просто создав другой контейнер», вы имеете в виду, создав новый шаблон управления для ListBox? – Hank