¿Cómo hacer que el StackPanel o el DockPanel se estiren para adaptarse a sus contenedores en WPF?

Tengo unGrid como contenedor raíz con dos columnas definidas (solo hay una fila).
La primera columna tiene un ancho flexible y la segunda columna tiene un ancho fijo de 300 px.
Next, he colocado unListBox dentro de la segunda columna para estirar tanto horizontal como verticalmente, es decir, para llenar toda la segunda columna.
or último, he definido una plantilla de elementos para laListBox para ser un @ orientado verticalmenStackPanel, con unoDockPanel y un par deTextBlocks dentro.

<!-- 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 Ti,tle}" />
  </StackPanel>
</DataTemplate>

...

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

Tengo dos preguntas

¿Cómo hago elStackPanel rellena todo el ancho de laListBox? En este momento, solo se necesita suficiente espacio para acomodar laDockPanel y elTextBlocks dentro. No se ajustará al ancho de laListBox oListBoxItem.Next, ¿cómo hago elDockPanel rellena todo el ancho de laStackPanel, es decir, su padre? Lo que sucede ahora es que incluso si el ancho de laTextBlocks en elStackPanel excede el ancho de laDockPanel, no se estirará para que coincida con su ancho.

Gracias por la ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta