C#WPF - GridLength GridUnitType.Auto

时间:2013-07-31 15:26:27

标签: c# wpf gridlength

任何人都可以解释使用之间的区别:

 GridLength length = new GridLength(0, GridUnitType.Auto) 

 GridLength length = new GridLength(1, GridUnitType.Auto)

我对此的了解有限,这使我相信这些都是相同的解决方案,因为它表示自动状态......“自动”,因此使双值成为冗余。

我见过的大多数示例都显示GridUnitType.Auto前面加的是1而不是0,但在我看来,这两个选项的工作原理相同吗?

是这种情况还是任何人都可以了解这些是否/如何不同

1 个答案:

答案 0 :(得分:16)

我认为您的理解是正确的,当使用值GridUnitType.Auto时,传递给构造函数的第一个值是多余的,因为大小将由内容对象确定。

GridLength结构构造函数的上下文中保留此参数(即使它未在此实例中使用),这有点意义,因为它允许第二个参数类型包含描述所有可用状态的值GridUnitType

来自documentation

枚举类型GridUnitType可以包含以下值:

Auto   - The size is determined by the size properties of the content object. 
Pixel  - The value is expressed as a pixel. 
Star   - The value is expressed as a weighted proportion of available space. 

实际上,第一个参数仅在第二个参数设置为GridUnitType.PixelGridUnitType.Star时才相关。

它不能以其他方式整齐地工作,例如如果您尝试将接受1个参数的构造函数作为GridUnitType,并且只使用了PixelStar,则只需要第二个参数。

这样,您可以获得一个1参数构造函数的好处,该构造函数接受double而不指定其他类型。虽然在使用Auto时(如在您的示例中),它确实具有潜在奇怪的两个参数构造函数的成本。