2016-05-03 7 views
1

XAMLコードを望むものをやっていない:私は整列右にあることを左揃えするテキストブロックとTetblockを希望XAMLたHorizo​​ntalAlignmentプロパティは、グリッド内で、私は

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> 
    <TextBlock Text="My text: " HorizontalAlignment="Left" /> 
    <TextBox Text="{Binding ...}" /> 
</StackPanel> 

。前のコードでは、両方とも右揃えになっています。

私は、内側のStackPanel追加した場合と同じ結果:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> 
    <StackPanel HorizontalAlignment="Left"> 
     <TextBlock Text="My text: " HorizontalAlignment="Left" /> 
    </StackPanel> 
    <TextBox Text="{Binding ...}" /> 
</StackPanel> 

私はどのようにすればいいの? Thxを事前に入力してください。

+0

'StackPanel'が間違っコントロールです。その「子供たち」は次々に位置しています。これを見るために 'StackPanel'に何か別のもの(例えば' Background = "Green" ')を与えてみてください。おそらく、 'Grid'を使いたいでしょう。なぜあなたは 'StackPanel'を右揃えにしているのか分かりませんが、' Stretch'はあなたが望むことをするかもしれませんが、あなたはそれを右揃えで解決しようとしました。 – Sinatr

+0

@Sinatr私は、テキストを最初に整列させたいと思っていましたが、 'StackPanel'が' Gird'セルを埋めることを望み、 'TextBlock'が残りのスペースを埋めるようにしたいと思いました。そうであれば、最後のコントロールを使用して残りのスペースを埋めることができるように、 'DockPanel'がそのトリックを行います。 – Adwaenyth

答えて

6

使用HorizontalContentAlignmentTextAlignmentHorizontalAlignmentStackPanelに対するTextBoxのアライメントを定義します。グローバルStyleが適用されていない限り、TextBox内のテキストは、デフォルトでは左に調整されます。

また、水平方向のStackPanelは、常に最小限のスペースを使用します。したがって、コントロールを可能な限り緊密に積み重ねます。正しく書式設定するには、グリッドを使用するか、またはTextBox/TextBlockに固定幅を指定する必要があります。

/編集:申し訳ありません。 TextBoxまたはTextBlock対照についてはTextAlignmentである。 HorizontalContentAlignmentは、Textプロパティ(例えば、Label)を明示的に使用しないコントロール用です。

代替あなたが固定幅を使用しない場合は、次のようにDockpanel次のようになります。

<DockPanel Grid.Column="0" Grid.Row="0" Margin="10, 0" LastChildFill="true"> 
    <TextBox Width="160" Height="30" DockPanel.Dock="Right" BorderBrush="#6593CF" BorderThickness="1" Text="{Binding ...}" /> 
    <TextBlock Text="My text: " FontSize="14" FontWeight="SemiBold" DockPanel.Dock="Left" TextAlignment="Left" /> 
</DockPanel> 
+0

それは正常に働いた。あなたの説明をありがとう:) –

+0

TextAlignment = "右"は私のためにUWPで働いていました。ありがとう。 –

関連する問題