あなたのコメントに照らして、ここでは、グリッドレイアウトとDockPanelレイアウトを達成するためのいくつかの方法を示す別の例があります。そのサウンドから、DockPanelのレイアウトがおそらくあなたが探しているものです。これで問題が解決しない場合は、希望のレイアウトとプロパティをより明確に説明する必要があります。
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.45*" />
<RowDefinition Height="0.05*" />
<RowDefinition Height="0.45*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<!-- note: you don't need to declare ColumnDefintion
widths here; added for clarity. -->
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="0.5*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Background="Tomato"
TextWrapping="Wrap">I'm on the left</TextBlock>
<TextBlock
Grid.Column="1"
Background="Yellow"
TextAlignment="Right"
TextWrapping="Wrap">I'm on the right</TextBlock>
</Grid>
<Grid Grid.Row="1" Background="Gray" />
<DockPanel Grid.Row="2">
<TextBlock
DockPanel.Dock="Left"
Background="Tomato"
TextWrapping="Wrap">I'm on the left</TextBlock>
<TextBlock
DockPanel.Dock="Right"
Background="Yellow"
TextAlignment="Right"
TextWrapping="Wrap">I'm on the right</TextBlock>
</DockPanel>
</Grid>
</Page>
明示的に幅を定義することなくそれを行うにはどうしますか?私はフォームがどんなエリアを埋めるために伸びることができるようにしたいと思います。 これは私が抱えていた問題の一部です。「幅= 100%」と言っても意味がありません。 – bugfixr
StackPanelには水平方向があるので、TextBlocksはちょうど水平に積み重ねられます。幅がなければ、TextBlockは内容に合わせてサイズを変更します。 考えてみましょう:TextBlock Widthを削除し、StackPanelをOrientation = "Vertical"に設定すると、各TextBlockはStackPanelの利用可能な幅の100%を占めるようになります。または、グリッドレイアウトを試してみてください。 レイアウトに必要なものを正確に把握していないと、それはちょっとした推測ゲームです。 –
私は彼が多分StackPanel以外のものを望んでいることに同意しますが(あなたが与えた理由で)、単純なレイアウトについては、GridではなくDockPanelを提案します。 – itowlson