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