Как растянуть ListBoxItem на всю длину ListBox? WPF (Silverlight)

ru-RU | создано: 02.11.2010 | опубликовано: 21.04.2014 | обновлено: 01.01.2018 | просмотров за всё время: 4604

В статье покажу как растянуть содержимое ListBoxItem на всю длину ListBox. Данный код работает и для Windows Presentation Foundation (WPF) и для Silverlight.

Наверное, у Вас тоже неоднократно возникало желание растянуть содержимое ListBoxItem на всю длину ListBox? Задача простая, но каждый раз (в силу того что сам компонент не очень простой, и у него очень много настроек), когда я пытал "по-быстрому" растянуть содержимое ListBoxItem на всю ширину попытки сводились к очередному поиску примера в интернете. Наверное, это потому, что с этим компонентом, я работаю не часто. Итак, как же это сделать?

Согласитесь, выглядит не очень эстетично. Так вот всё что нам потребуется, так это:

  1. Создать стиль в котором установить свойство HorizontalContentAlignment в Stretch.
  2. Установить этот стиль в нашем ListBox.

Наш стиль добавлен в Page.Resource:

<Style
       x:Key="StretchedContainerStyle"
       TargetType="{x:Type ListBoxItem}">
        <Setter
           Property="HorizontalContentAlignment"
           Value="Stretch" />
    </Style>

И теперь у ListBox применяем стиль:

<ListBox
           x:Name="listBox"
           ItemContainerStyle="{StaticResource StretchedContainerStyle}" />

Не то чтобы совсем идеально, но, согласитесь, уже гораздо лучше.