WPF - 适合嵌套网格的控件大小

问题描述 投票:0回答:1

使用 WPF,我有一个由一系列嵌套网格组成的布局,因为我的理解是,这比使用 RowSpan 更能保留我想要的外观。每个生成的网格部分都是一个区域,将由某些控件填充,该控件根据程序设置而变化。我不会创建这些控件。我正在创建模板,以便创建模板的人了解他们需要使用多少空间。

不过,我在数学上遇到了困难,无法给出准确的模板大小。

例如,我的屏幕尺寸为1920x1200。

第一个网格分为两列,75* 和 25*。网格放置在第一列中,进一步分为三列:50*、25* 和 25*。每个网格部分的边距为 5。

我的理解是 x* 的意思是“可用屏幕尺寸的百分比”。因此,第二个网格的第二列中的控件在我的屏幕尺寸上应具有 350 的宽度。

First grid division: 1920 * 0.75 = 1440
Second grid division: 1440 * 0.25 = 360
Adjustment for margin: 360 - 10 = 350

但是当我使用它(以类似的方式计算宽度)作为控件的基础并将其插入正确的网格划分时,它无法正确显示。与我的预期相比,它被压扁或拉伸了。

我显然遗漏或误解了它的工作原理。请帮忙。

我应该如何确定这些控件模板的正确大小?

网格代码:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition x:Name="MainContent" Width="75*"/>
    <ColumnDefinition x:Name="SidebarContent" Width="25*"/>
  </Grid.ColumnDefinitions>

  <Grid x:Name="MainContentGrid" Grid.Column="0">
    <Grid.ColumnDefinitions>
      <ColumnDefinition x:Name="ContentColumn1" Width="50*"/>
      <ColumnDefinition x:Name="ContentColumn2" Width="25*"/>
      <ColumnDefinition x:Name="ContentColumn3" Width="25*"/>
    </Grid.ColumnDefinitions>

    <Border x:Name="ContentColumn2Border Grid.Column="1" Margin="5">
      <local:ContentColumn2Control/>
    </Border>
  </Grid>
</Grid>
wpf xaml wpf-controls wpf-grid
1个回答
0
投票

不,它不是那样工作的。您应该阅读 WPF 星型大小调整。有大量的帖子和文档,例如:

读完所有这些后,我们可以得出这样的结论:星形尺寸允许按比例分配可用空间 - 因此星形单位意味着网格具有的可用空间的一部分。

所以,如果你的网格有 100px 和 50px 高度,那么

  • 如果您要定义宽度为
    3* = 75px
    * = 25px
    ,
  • 的 2 列
  • 如果您定义 2 行,高度为
    3* = 30px
    2* = 20px
    ,
© www.soinside.com 2019 - 2024. All rights reserved.