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" に設定された 2 番目 (右側) の列定義。auto と * の詳細については、http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9a7e6591-1fae-4295-b68a-be97e8e53d06/を参照してください。

于 2012-11-18T19:49:22.017 に答える