2012-11-17 19 views
6

Questo è il mio codice originale:Perché la barra di avanzamento WPF non si allungherà per adattarsi?

<StackPanel Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal"> 
     <ProgressBar Height="23" Name="searchProgressBar" Foreground="Blue" BorderBrush="#00000000" BorderThickness="1" VerticalAlignment="Top" HorizontalAlignment="Stretch"/> 
     <TextBlock Text="asdf" Height="23" Name="progressTextBlock" VerticalAlignment="Top" Foreground="Red" HorizontalAlignment="Right"/> 
</StackPanel> 

Il progressbar era molto piccola, forse a livello 2 o 3 pixel, poi c'è stato il blocco di testo e spazio vuoto dopo. Così ho provato ad agganciare esplicitamente gli elementi ai lati:

<DockPanel Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" > 
      <ProgressBar DockPanel.Dock="Left" Height="23" Name="searchProgressBar" Foreground="Blue" BorderBrush="#00000000" BorderThickness="1" VerticalAlignment="Top" /> 
      <TextBlock DockPanel.Dock="Right" Text="asdf" Height="23" Name="progressTextBlock" VerticalAlignment="Top" Foreground="Red" HorizontalAlignment="Right"/> 
</DockPanel> 

Non disponibile. Ho anche provato a modificare ciascuna soluzione impostando HorizontalAlignment="Stretch" sulla barra di avanzamento, ma non c'è alcun cambiamento. Come lo allungo per riempire tutto lo spazio che c'è dopo che il blocco di testo è stato reso?

risposta

4

Rimuovere DockPanel.Dock="Left" dal ProgressBar e cambiare l'ordine dei controlli:

<DockPanel> 
    <TextBlock DockPanel.Dock="Right" Height="23" VerticalAlignment="Top" HorizontalAlignment="Right"/> 
    <ProgressBar Height="23" VerticalAlignment="Top" /> 
</DockPanel> 

Per default, DockPanel ha la proprietà LastChildFill insieme a true, che renderà l'ProgressBar prendere lo spazio disponibile.