这是我的原始代码:
<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"
来修改每个解决方案,但没有任何变化。在渲染文本块之后,如何拉伸它以填充所有空间?
答案 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/