これはとても単純なはずです-私は長い間、一見単純なタスクを機能させようとして机に頭をぶつけてきました(WPFが直感的でないかバグがあるように感じます)...
いずれにせよ、私は水平方向に設定されたStackpanelを持っています。その中には2つのTextBlockがあります。 2番目のテキストを右側に表示してほしい。
どうすればそれを達成できますか?
これらすべてを行うことで、Silverlightから離れた理由を思い出します。 :p
StackPanelのようにすべての要素をスタックしたくない場合は、DockPanelを使用する必要があります。 2番目のTextBlockを右揃えにするには、ダミーのTextBlockを追加して、それらの間の領域を埋めることができます。
<DockPanel> <TextBlock>Left text</TextBlock> <TextBlock DockPanel.Dock="Right">Right text</TextBlock> <TextBlock /> </DockPanel>
または、TextAlignment属性を使用できます。
<DockPanel> <TextBlock>Left text</TextBlock> <TextBlock TextAlignment="Right">Right text</TextBlock> </DockPanel>
あなたのコメントに照らして、これはあなたが望むことを達成するためのいくつかの方法、グリッドレイアウトと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>
私は同じ問題を抱えているので、グリッドを使用して非常に簡単にアーカイブできます:)
<Grid>
<TextBlock>Left text</TextBlock>
<TextBlock TextAlignment="Right">Right text</TextBlock>
</Grid>