12

谁能解释使用之间的区别:

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

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

我对此的有限了解使我相信这些都是相同的解决方案,因为 auto 就像它所说的那样......“auto”,因此使双重价值变得多余。

我见过的大多数例子都显示GridUnitType.Auto前面有 1 而不是 0,但在我看来,这两个选项都一样吗?

是这种情况吗,或者任何人都可以阐明这些是否/如何不同

4

1 回答 1

22

我认为你的理解是正确的,当使用值时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所以真的,第一个参数只有在第二个参数设置为or时才相关GridUnitType.Star

它不会以其他方式巧妙地工作,例如,如果您尝试让构造函数接受 1 个参数作为 a ,并且仅在使用orGridUnitType时才需要第二个参数。PixelStar

这样一来,您将受益于拥有一个 1 参数构造函数,该构造函数接受一个 double 而无需指定其他类型。虽然它在使用时确实有可能看起来很奇怪的两个参数构造函数的成本Auto(如您的示例中所示)。

于 2013-07-31T15:35:55.347 回答