XAML - 如何在 StackPanel 中使控件并排对齐

7

我一直在尝试将以下代码中的控件彼此对齐。但好像不起作用。起初,我没有使用StackPanel,但是这样就无法正确地对齐我的控件。

以下是我的代码:

<StackPanel x:Name="doelenContentPanel" HorizontalAlignment="Center">
    <TextBlock x:Name="txtBOmzet" TextWrapping="Wrap" Text="Omzet:  " Margin="10,58,-10,-58" HorizontalAlignment="Left" />
    <TextBox x:Name="txtbOmzet" Margin="82,58,0,0" TextWrapping="Wrap" Text="" HorizontalAlignment="Center"/>
    <TextBlock x:Name="txtBOmzetMaand" Margin="151,58,0,0" TextWrapping="Wrap" Text="Maand" HorizontalAlignment="Right" />
</StackPanel>
2个回答

12

首先,不要使用硬编码的Margin属性。其次,从每个控件中删除HorizontalAlignment。 现在,为了将控件对齐到一起,设置StackPanel的Orientation属性。

<StackPanel x:Name="doelenContentPanel" Orientation="Horizontal">
  <TextBlock x:Name="txtBOmzet" TextWrapping="Wrap" Text="Omzet:  "  />
  <TextBox x:Name="txtbOmzet" TextWrapping="Wrap" Text="" />
  <TextBlock x:Name="txtBOmzetMaand" TextWrapping="Wrap" Text="Maand" />
</StackPanel>

控件已居中,但文本框的高度占据了页面高度的100%。 - user3925079
然后,您应该使用网格的行和列定义来定义子控件的高度和宽度。之后,在StackPanel上设置Grid.Row附加属性。 - user1672994
你可以给一个例子吗? - user3925079

7

明白了!我在StackPanel中添加了Orientation="Horizontal"属性。然而,这只能对特定的面板内容进行对齐。例如,如果您想要垂直对齐2个StackPanel,然后水平对齐这两个面板中的内容,您需要这样做:

<StackPanel x:Name="contentWrapper" Orientation="Vertical">
    <StackPanel x:Name="doelenContentPanel" Orientation="Horizontal">
    <TextBlock x:Name="txtBOmzet" TextWrapping="Wrap" Text="Omzet:  "  />
    <TextBox x:Name="txtbOmzet" TextWrapping="Wrap" Text="" />
    <TextBlock x:Name="txtBOmzetMaand" TextWrapping="Wrap" Text="Maand" />
</StackPanel>
<StackPanel x:Name="secondPanel" Orientation="Horizontal">
    *this looks familiar to the first panel*
</StackPanel>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接