8

这是我的原始代码:

<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"进度条来修改每个解决方案,但没有任何变化。如何拉伸它以填充文本块渲染后的所有空间?

4

2 回答 2

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占用可用空间。

于 2012-11-17T23:16:29.043 回答
2

啊,我明白你在做什么。这可能是使用具有 2 列定义的网格的更好地方。Width="*" 的第一个(左侧)列定义和宽度设置为 Width="Auto" 的第二个(右侧)列定义。有关汽车与 * 的更多信息,请参阅http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9a7e6591-1fae-4295-b68a-be97e8e53d06/

于 2012-11-18T19:49:22.017 回答