Как сделать StackPanel или DockPanel растягиваются, чтобы вместить их контейнеры в WPF?

У меня есть Grid в качестве корневого контейнера с двумя определенными столбцами (там только одна строка).
Первый столбец имеет гибкую ширину, а второй столбец имеет фиксированную ширину 300 пикселей.
Затем я поместил ListBox во второй столбец, чтобы растянуть его как по горизонтали, так и по вертикали, то есть заполнить весь второй столбец.
Наконец, я определил шаблон элементов для ListBox как вертикально ориентированную StackPanel , с одной DockPanel и парой TextBlock с внутри.

<!-- Data template for ListBox -->
<DataTemplate DataType="{x:Type entities:Track}">
  <StackPanel Orientation="Vertical">
    <DockPanel>
      <TextBlock DockPanel.Dock="Left" Text="Now playing" />
      <TextBlock DockPanel.Dock="Right" Text="Time remaining" />
    </DockPanel>
    <TextBlock Text="{Binding Artist}" />
    <TextBlock Text="{Binding Title}" />
  </StackPanel>
</DataTemplate>

...

<ListBox 
  Grid.Column="1" 
  HorizontalAlignment="Stretch" 
  VerticalAlignment="Stretch" />

У меня два вопроса:

  1. Как мне заставить StackPanel заполнить всю ширину ListBox ? Сейчас достаточно места только для размещения внутри DockPanel и TextBlock . Он не умещается по ширине ListBox или ListBoxItem .
  2. Затем, как мне заставить DockPanel заполнить всю ширину ] StackPanel , т.е. его родитель? Что происходит прямо сейчас, так это то, что даже если ширина TextBlock в StackPanel превышает ширину DockPanel , он не растягивается, чтобы соответствовать их ширина.

Спасибо за помощь.

14
задан Boris 22 February 2011 в 14:54
поделиться