Если вы явно не устанавливаете ширину ListBox, он автоматически устанавливает свою ширину равной ширине самого широкого видимого элемента. Это означает, что по мере прокрутки вверх и вниз и изменения самого широкого видимого элемента данных ширина самого списка увеличивается и уменьшается.
Итак, как лучше всего найти ширину самого широкого элемента в списке, а затем установить для нее ширину ListBox? Мой шаблон данных для ListBox - это StackPanel, содержащий CheckBox и TextBlock, поэтому, очевидно, ширина текстового блока будет варьироваться в зависимости от длины строки в нем.
Здесь, на SO, уже есть несколько предложений с ответами от «сделай предположение» до " измерить размер текста " (как измерить размер текста в SL, не помещая его в элемент пользовательского интерфейса?).
Может кто-нибудь подкинет мне несколько идей? Я открыт для повторения всех экземпляров шаблона данных, если мне нужно, хотя лучшим вариантом может быть поиск самой длинной строки и вычисление оттуда?