21

これはとても単純なはずです-私は長い間、一見単純なタスクを機能させようとして頭を机にぶつけてきました(WPFが直感的でないかバグがあるように感じます)...

いずれにせよ、水平方向に設定された Stackpanel があります。その中には、2 つの TextBlocks があります。2番目のテキストを右側に表示したい。

どうすればそれを達成できますか?

このすべてを実行すると、Silverlight から離れた理由が思い出されます。:p

4

3 に答える 3

35

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>
于 2010-06-30T09:07:36.473 に答える
4

私は同じ問題を抱えているので、グリッドを使用して非常に簡単にアーカイブできます:)

<Grid>
    <TextBlock>Left text</TextBlock>
    <TextBlock TextAlignment="Right">Right text</TextBlock>
</Grid>
于 2015-02-03T05:49:31.820 に答える
2

あなたのコメントに照らして、グリッド レイアウトと 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>
于 2009-10-17T18:34:51.637 に答える