【问题标题】:C# WPF - GridLength GridUnitType.AutoC# WPF - GridLength GridUnitType.Auto
【发布时间】:2013-07-31 15:26:27
【问题描述】:

谁能解释一下使用的区别:

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

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

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

我见过的大多数示例都显示GridUnitType.Auto 以 1 而不是 0 开头,但在我看来,这两个选项的效果都一样吗?

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

【问题讨论】:

  • 我认为你应该直接使用 GridLength.Auto

标签: c# wpf gridlength


【解决方案1】:

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

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

来自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 参数构造函数的好处,该构造函数接受一个双精度而不指定其他类型。尽管在使用 Auto 时,它确实有可能看起来很奇怪的两个参数构造函数的成本(如您的示例中所示)。

【讨论】:

  • 谢谢,我也明白在使用GridUnitType.Star 作为GridLength oneThird = new GridLength(1, GridUnitType.Star);GridLength twoThirds = new GridLength(2, GridUnitType.Star); 时会产生相关性,因为第二个GridLenth 的空间是第一个的两倍?跨度>
  • 你说得对,我对格式有点忘乎所以并没有正确证明我写的内容(感谢 Clemens!)。
  • 可能值得一提的是,还有一个静态属性GridLength.Auto,它看起来比构造函数初始化更好。
猜你喜欢
  • 1970-01-01
  • 2010-12-06
  • 2013-07-03
  • 2021-09-10
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多