为什么WPF进度条不适合?

时间:2012-11-17 23:09:34

标签: wpf alignment stackpanel

这是我的原始代码:

<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>

进度条非常小,可能是2或3像素宽,然后是文本块和空白区域。所以我尝试将元素明确地对接到两侧:

<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>

无济于事。我还尝试通过在进度条上设置HorizontalAlignment="Stretch"来修改每个解决方案,但没有任何变化。在渲染文本块之后,如何拉伸它以填充所有空间?

2 个答案:

答案 0 :(得分:4)

DockPanel.Dock="Left"移除ProgressBar并切换控件的顺序:

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

默认情况下,DockPanel将其属性LastChildFill设置为true,这将使ProgressBar占用可用空间。

答案 1 :(得分:1)

啊,我明白你要做什么了。这可能是使用具有2列定义的网格的更好位置。第一个(左一个)列定义,Width =“*”,第二个(右一个)宽度设置为Width =“Auto”。有关自动vs *的详细信息,请参阅http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9a7e6591-1fae-4295-b68a-be97e8e53d06/