37

Label の横に単純な TextBox があるとします。

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Margin="3">MyLabel</Label>
        <TextBox Margin="3" Width="100">MyText</TextBox>
    </StackPanel>
    ...
</StackPanel>

これにより、次の結果が得られます。

結果

ご覧のとおり、MyLabel と MyText のベース ラインが揃っていないため、見栄えが悪くなります。もちろん、マージンが一致するまでいじり始めることもできますが、これは非常に一般的な要件であるため、WPF ははるかに簡単でエレガントなソリューションを提供すると確信しています。

4

5 に答える 5

40

TextBoxこの動作は、デフォルトで の垂直方向の配置が に設定されていることが原因であると思います。Stretchこれにより、使用可能なスペースがいっぱいになり、テキストの下に余分なピクセルがいくつかあります。代わりにこれを使用する場合:

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label >MyLabel</Label>
        <TextBox VerticalAlignment="Center" Width="100">MyText</TextBox>
    </StackPanel>
</StackPanel>

... よりクリーンな結果が表示されるはずです。

于 2010-06-14T17:20:57.560 に答える
25

どう思いますか?

代替テキスト

<StackPanel Orientation="Horizontal">
        <Label Margin="3" VerticalContentAlignment="Center">MyLabel</Label>
        <TextBox Margin="3" VerticalContentAlignment="Center" Width="100">MyText</TextBox>
 </StackPanel>
于 2010-06-14T17:19:46.343 に答える
5

私は Kaxaml でその外観を実現しました:

<StackPanel Orientation="Horizontal">
  <Label Margin="3" VerticalAlignment="Center">MyLabel</Label>
  <TextBox Margin="3" Width="100" VerticalAlignment="Center">MyText</TextBox>
</StackPanel>
于 2010-06-14T17:21:51.093 に答える