Как получить или вычислить фактическую ширину ListBox без вертикальной полосы прокрутки, если она видна

Мне интересно, как получить или вычислить фактическую ширину ListBox без вертикальной полосы прокрутки, если она видна.

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

Width="{Binding ActualWidth, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}

По крайней мере, выше привязки скажите мне фактическую ширину ListBox, но это не обрабатывает ширину вертикальной полосы прокрутки.

Есть ли хороший способ решить эту проблему?

Ответ 1

Попробуйте привязку к свойству ViewportWidth содержащего ScrollViewer.

Вот так:

Width="{Binding Path=ViewportWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ScrollViewer}}"