WPF Grid水平对齐不起作用。尺寸不改变。

5

我有一个Stack控件,里面包含一个Grid控件。

当我调整窗口大小时,我需要增加Stack和Grid的大小。我将Stack和Grid的HorizontalAlignment属性设置为'Stretch'。

虽然Stack工作得很好,但是当我调整窗口大小时,Grid的大小并没有随之增加。

下面是我的代码:

<StackPanel Background="Blue" Orientation="Horizontal" HorizontalAlignment="Stretch" Grid.Column="1" Margin="13,0,0,0" >
   <Grid HorizontalAlignment="Stretch" Background="Beige" Width="515">

        <Grid.RowDefinitions>
            <RowDefinition Height="100" />
            <RowDefinition Height="240" />
            <RowDefinition Height="100" />
        </Grid.RowDefinitions>

        <Image x:Name="imageMap" Source="Resources/images.jpg" HorizontalAlignment="Stretch" Grid.Row="0" Stretch="Fill" Margin="0,0,0,0" />

   </Grid>
</StackPanel>

请指导。

2
你认为可能是你在Grid上设置的固定宽度Width="515"吗? - Chris W.
3
在StackPanel中,当Orientation=Horz且HorzAlignment=Stretch时,我认为拉伸(stretch)被忽略了。 - kenny
正如@ChrisW.已经指出的那样,您已经设置了固定宽度的Grid。当您删除它时,您的Grid应该能够随其父级一起拉伸。 - Bolu
固定大小没有帮助,但当我移除 Orientation=Horz 时它可以工作...谢谢。 - developergg
1个回答

4
即使您从网格中移除了宽度,也无法正常工作,因为StackPanel的方向设置为水平。当设置为此时,StackPanel在测量布局传递期间会准确地给出子元素所需的宽度请参见此处的布局
要解决此问题,您需要将方向更改为垂直,或使用不同的容器,例如DockPanel。

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