ラベルの横に単純なTextBoxがあるとします。
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label Margin="3">MyLabel</Label>
<TextBox Margin="3" Width="100">MyText</TextBox>
</StackPanel>
...
</StackPanel>
これにより、次の結果が得られます。
ご覧のとおり、MyLabelとMyTextのベースラインが揃っていないため、見苦しく見えます。もちろん、マージンが一致するまでマージンを試してみることができますが、これは非常に一般的な要件であるため、WPFがはるかに簡単でエレガントなソリューションを提供することを確信しています。
この動作は、TextBox
がデフォルトでStretch
の垂直方向の配置に設定されているために発生すると考えられます。 。代わりにこれを使用する場合:
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label >MyLabel</Label>
<TextBox VerticalAlignment="Center" Width="100">MyText</TextBox>
</StackPanel>
</StackPanel>
...よりクリーンな結果が表示されます。
私はKaxamlでその外観を達成しました:
<StackPanel Orientation="Horizontal">
<Label Margin="3" VerticalAlignment="Center">MyLabel</Label>
<TextBox Margin="3" Width="100" VerticalAlignment="Center">MyText</TextBox>
</StackPanel>
これは古い答えであることはわかっていますが、固定テキストボックスの幅に依存する必要がない、別の方法を求める人のための例を次に示します。
StackPanelの代わりに、DockPanelと.Dock
を使用します。
これはグリッド内で使用すると非常に便利です。
<DockPanel Grid.Column="2" Grid.Row="2">
<Label Content="SomeTitle:" DockPanel.Dock="Left"></Label>
<TextBox x:Name="SomeValueTextBox" VerticalAlignment="Center" DockPanel.Dock="Right"></TextBox>
</DockPanel>