Сделать ListBox заполнить ширину родительского контейнера - PullRequest
3 голосов
/ 28 января 2011

У меня есть DockPanel со списком в нем. Док-панель успешно заполняет ширину всего окна. Теперь я хочу, чтобы Listbox заполнил всю ширину DockPanel.

Я пробовал много вещей ... включая обтягивание сетки вокруг нее и установку ширины столбца *, установку горизонтального выравнивания списка для растяжения и многие другие. Я не могу заставить этот глупый список заполнить всю ширину.

У этого списка есть ItemTemplate, но все внутри него имеет горизонтальное выравнивание растяжения с автоматической шириной. Всякий раз, когда вы устанавливаете ширину ItemTemplate на что-то статическое, размер списка изменяется соответствующим образом. Я просто не могу заставить его заполнить родителя.

Спасибо.

EDIT:

Спасибо, ребята, за то, что заставили меня осознать, что это моя вина ... Оказывается, это был бред в стиле Tag.

Я попытаюсь снять этот вопрос сейчас.

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Держу пари, что ваш ListBox заполняет ширину родительского контейнера, но элементы ListBoxItems в вашем списке не растягиваются горизонтально Попробуйте добавить следующий стиль:

 <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
         <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
     </Style> 
 </ListBox.ItemContainerStyle> 
3 голосов
/ 28 января 2011

ListBox должен заполнить DockPanel по умолчанию.

Я только что попробовал:

<DockPanel>
  <ListBox Background="Red" />
</DockPanel>

, и он работал отлично.Нам будет трудно понять, в чем проблема, без фрагмента вашего кода.

1 голос
/ 28 января 2011

Вы также можете использовать DockPanel.LastChildFill свойство:

http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.lastchildfill.aspx

...