c# wpf如何设置顶部元素填充和底部固定高度?

w46czmvw  于 2023-01-14  发布在  C#
关注(0)|答案(3)|浏览(255)

好吧,是可悲的,但我在这超过4个小时,不能搞清楚这个不工作,我尝试了堆栈面板,网格,码头面板,一切都来相同的结果
我需要的是简单的,底部元素,将有按钮将有固定的高度和另一个面板/部分在顶部填充所有剩余的空间,但顶部的一个从来没有工作或它重叠的底部之一或它保持在最低高度在顶部。
重叠:

<Grid>
    <Grid VerticalAlignment="Stretch" ></Grid>
    <Grid VerticalAlignment="Bottom" Height="100"></Grid>
</Grid>

顶部的一个变为高度= 0

<Grid>
    <Grid VerticalAlignment="Top" ></Grid>
    <Grid VerticalAlignment="Bottom" Height="100"></Grid>
</Grid>

我怎么让上面的那个填满所有的空间?

7bsow1i6

7bsow1i61#

您应该在网格中创建如下行:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
            <Grid Grid.Row="0"> 
                <!--Top Grid is always going to fill all remaining space not used by bottom grid-->
            </Grid>
            <Grid Height="100" Grid.Row="1"> 
                <!--Bottom Grid will only take 100 px-->                    
            </Grid>
    </Grid>

我们都可以从某个地方开始,WPF中的布局容器有时可能会令人困惑

t40tm48m

t40tm48m2#

按如下方式定义网格:

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

    <Grid Grid.Row="0" Background="green"/>
    <Grid Grid.Row="1">
        <Button Content="MyButton"/>
    </Grid>
</Grid>

定义RowDefinitions就可以了。

qyuhtwio

qyuhtwio3#

我发布这篇文章纯粹是为了展示dockpanel是如何工作的。我自己很少使用它,但为了完整:
我倾向于有一个固定高度的底部行在一个网格自己。
如另一答复所示。
如果我有一些标准的样式设置按钮的高度和宽度,Auto也是有效的。
DockPanel的工作原理是这样的。

<DockPanel LastChildFill = "True">
    <StackPanel Orientation="Horizontal"
                DockPanel.Dock = "Bottom">
        <Button Content="Button One"/>
        <Button Content="Button Two"/>
    </StackPanel>
    <Grid DockPanel.Dock="Top"
          Background="Yellow"/>
</DockPanel>

这两个区域需要一些其他面板。
但你可能还是想要他们。
默认情况下,黄色网格将填充,但我已经明确设置了LastChildFill。无论你最后在停靠面板中放入什么,都将填充剩余的空间。

相关问题