设定Grid行或列的尺寸

和普通UI元素可以设定Height和Width属性不同,RowDefinition类和ColumnDefinition类中相应的属性的类型不是Double,而是System.Window.GridLength。Grid调整Grid行列尺寸的方法有如下三种:

绝对尺寸  把Grid行列大小尺寸设为一个数值,这时Grid的行列尺寸不会随着其中UI元素的大小进行自动调整。

自动尺寸  把Grid的Height和Width设为Auto。这时WPF会根据Grid中的UI元素自动调整其行列的高度或宽度。其原则为:Grid的行高度由该行中元素的最大高度决定,Grid的列宽度由该列中元素的最大宽度决定。使用这种方法可以保证Grid中的UI元素不会只显示一部分。

按比例分割行列尺寸  把有限的平面大小按照一定的比例划分行的高度或列的宽度,其比例的数值可以是浮点数。如第一列的宽度设为"*"、第二列的宽度设为"1.2*"、第三列的宽度设为"2.5*",等等。

在C#中设定行列尺寸的语法:

RowDefinition rowdef = new RowDefinition();   
rowdef.Height = new GridLength(100, GridUnitType.Pixel);  (绝对尺寸)   
rowdef.Height = GridLength.Auto; (自动尺寸)   
rowdef.Height = new GridLength (2,GridUnitType.Star);(按比例尺寸)  

WPF默认设置行的高度和列的宽度为1个*,即每行或每列的大小一样。

在XAML中设定行列尺寸的语法:

<RowDefinition Height="100"/>  (绝对尺寸)   
<RowDefinition Height ="Auto"> (自动尺寸)   
<RowDefinition Height = "2*">  (按比例尺寸)  

在设定Grid行列的尺寸时,还有一对重要参数:最小/最大宽度(MinWidth和MaxWidth);最大/最小高度(MinHeight和MaxHeight);当用户设定某个单元的MinWidth和MaxWidth值后,Grid允许该单元宽度的变化范围为MinWidth和MaxWidth之间。若用户的设定值大于MaxWidth, Grid用MaxWidth作为该单元的宽度;若用户的设定值小于MinWidth, Grid用MinWidth作为该单元的宽度。对于高度来说,上述规则也适用。

当Grid行列大小设为按比例排版时,WPF划分区域的方法为:

若行的高度都为*,就按Grid中的行数来计算出每行的高度。如整个Grid区域的高度是100,你要显示10行,那么每行的高度就是10(100/10)。

若Grid中有两行,第一行的高度设为*,第二行的高度设为1.5*,而整个Grid区域的高度仍为100,那么第一行的高度就是100/2.5= 40;第二行的高度就是100/2.5 * 1.5 = 60。

上述计算每行高度的规则也适用于计算每列的宽度,实际上在使用按比例分割行列尺寸时,行的高度或列的宽度的绝对数值并不重要,重要的是其相对比例。

原文地址:https://www.cnblogs.com/swarb/p/9924406.html