使用 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 星型大小调整。有大量的帖子和文档,例如:
读完所有这些后,我们可以得出这样的结论:星形尺寸允许按比例分配可用空间 - 因此星形单位意味着网格具有的可用空间的一部分。
所以,如果你的网格有 100px 和 50px 高度,那么
3* = 75px
和 * = 25px
,3* = 30px
和 2* = 20px
,