具有多个固定高度部分和相对于窗口大小的某些部分的 WPF 布局

发布于 2024-09-05 08:30:51 字数 634 浏览 10 评论 0原文

目前,我的主要布局由垂直方向的堆栈面板组成,如下所示:

Root StackPanel

  • StackPanel - 固定高度 150 (水平方向)

  • StackPanel - 相对高度必须为 代表屏幕上剩余的可用空间 (但至少 150 像素)。由 Telerik 使用 GridView 控件,如果我不指定 Height 或 MaxHeight Telerik GridView 高度会变得非常大并且不适合我的窗口。

  • StackPanel - 固定高度 100 (水平方向)

  • StackPanel - 相对高度必须为 屏幕上剩余一半可用空间 (但至少 150 像素)。由 Telerik 使用 GridView 控件,如果我不指定 Height 或 MaxHeight Telerik GridView 高度会变得非常大并且不适合我的窗口。

  • StackPanel - 固定高度 100 (水平方向)

视图必须完全适合可用的屏幕尺寸。

问题是我不明白如何根据可用的屏幕尺寸调整视图的某些区域的大小。

有没有简单的方法来解决它,或者我应该绑定到窗口高度属性并进行数学计算?

非常感谢!

At moment my main layout consists of vertically oriented stack panel and it looks like this:

Root StackPanel

  • StackPanel - fixed Height 150
    (horizontal orientation)

  • StackPanel - relative Height must be
    behalf of free space left on screen
    (but at least 150 px). Used by Telerik
    GridView Control, if I don't specify Height or MaxHeight Telerik GridView Height becomes very large and does not fit my window.

  • StackPanel - fixed Height 100
    (horizontal orientation)

  • StackPanel - relative Height must be
    half of free space left on screen
    (but at least 150 px). Used by Telerik
    GridView Control, if I don't specify Height or MaxHeight Telerik GridView Height becomes very large and does not fit my window.

  • StackPanel - fixed Height 100
    (horizontal orientation)

The view must totally fit available screen size.

The problem is that I don't understand how to make certain areas of my view resize depending on available screen size.

Is there is easy way to solve it, or should I be binding to Window height property and doing math?

Thank You very much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

碍人泪离人颜 2024-09-12 08:30:51

我没有要测试的 Telerik 控件,所以这不是我的想法 - 你能不能使用网格而不是像这样的堆栈面板作为你的控件的基础吗? - 如果这仍然是一个问题,那么发布一些代码,我们可以看看您想要实现的目标。

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="150"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="100"/>
            <RowDefinition Height="*" />
            <RowDefinition Height="100"/>            
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" />
        <StackPanel Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="2" />
        <StackPanel Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="4" />
    </Grid>

I dont have the telerik controls to hand to test so this is off the top of my head - can you not use a grid as the basis of your control rather than a stackpanel like this? - if this is still a problem then post some code up and we can take a look at what you are trying to achieve.

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="150"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="100"/>
            <RowDefinition Height="*" />
            <RowDefinition Height="100"/>            
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" />
        <StackPanel Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="2" />
        <StackPanel Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="4" />
    </Grid>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文