当右对齐时,控件无法到达右边界。

58 浏览
0 Comments

当右对齐时,控件无法到达右边界。

右对齐的标签无法到达右边框:\n


    

\n尽管我已经指定了HorizontalAlignment=\"Stretch\",但似乎两个标签都没有占满可用的宽度。这是什么原因?

0
0 Comments

问题的原因是使用了Grid布局,但是没有设置对齐方式。解决方法是在Grid布局中设置HorizontalAlignment属性为Right。修改后的代码如下:

     <Grid>
       <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
       </Grid.ColumnDefinitions>
       <Label Grid.Column="0" Content="Left Align" HorizontalAlignment="Left" />
       <Label Grid.Column="2" Content="Right Align" HorizontalAlignment="Right" />
    </Grid>

0
0 Comments

当没有提供宽度时,StackPanel会根据内容自动缩小以适应。

可以使用DockPanel,如Stephan Bauer所说,或者可能使用Grid

在使用StackPanel布局时,有时会出现控件无法到达右边界的问题。这是因为StackPanel会根据内容自动缩小以适应,导致控件无法扩展到整个宽度。

解决这个问题的方法是使用DockPanelGrid布局。这两种布局不会根据内容自动缩小,而是根据指定的宽度来布局控件。

下面是使用DockPanel布局解决该问题的示例代码:

<DockPanel>

<Button Content="Button 1" DockPanel.Dock="Left" />

<Button Content="Button 2" DockPanel.Dock="Right" />

</DockPanel>

下面是使用Grid布局解决该问题的示例代码:

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*" />

<ColumnDefinition Width="Auto" />

</Grid.ColumnDefinitions>

<Button Content="Button 1" Grid.Column="0" />

<Button Content="Button 2" Grid.Column="1" />

</Grid>

使用DockPanelGrid布局可以确保控件能够扩展到整个宽度,解决了StackPanel布局中控件无法到达右边界的问题。

0
0 Comments

问题的原因是使用了StackPanel进行对齐时,控件无法达到右边框。解决方法是使用DockPanel代替StackPanel。具体代码如下所示:


    

在这里,StackOverflow用户santosc在这里解释了为什么使用StackPanel进行对齐时无法达到预期的效果:

A stackpanel, no matter how you stretch it, will collapse around the children. you can't make it grow more than that.

谢谢,我将在7分钟内接受您的答案。但是能否请您解释一下为什么我的XAML代码没有产生相同的结果呢?

当您设置了StackPanel的宽度时,结果是相同的。

0