任何人都可以解释使用之间的区别:
GridLength length = new GridLength(0, GridUnitType.Auto)
和
GridLength length = new GridLength(1, GridUnitType.Auto)
我对此的了解有限,这使我相信这些都是相同的解决方案,因为它表示自动状态......“自动”,因此使双值成为冗余。
我见过的大多数示例都显示GridUnitType.Auto
前面加的是1而不是0,但在我看来,这两个选项的工作原理相同吗?
是这种情况还是任何人都可以了解这些是否/如何不同
答案 0 :(得分:16)
我认为您的理解是正确的,当使用值GridUnitType.Auto
时,传递给构造函数的第一个值是多余的,因为大小将由内容对象确定。
在GridLength
结构构造函数的上下文中保留此参数(即使它未在此实例中使用),这有点意义,因为它允许第二个参数类型包含描述所有可用状态的值GridUnitType
。
枚举类型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.Pixel
或GridUnitType.Star
时才相关。
它不能以其他方式整齐地工作,例如如果您尝试将接受1个参数的构造函数作为GridUnitType
,并且只使用了Pixel
或Star
,则只需要第二个参数。
这样,您可以获得一个1参数构造函数的好处,该构造函数接受double而不指定其他类型。虽然在使用Auto
时(如在您的示例中),它确实具有潜在奇怪的两个参数构造函数的成本。