4

我目前正在开发一个 Windows 8 Metro/Modern UI 应用程序。现在,我正在为 Visual Studio 处理 Expression Blend 中的界面。

我的问题是:在调整网格列等 UI 元素的大小时,我可以使用像素、自动或星号。在这种情况下,什么是明星?谷歌搜索一无所获,我在 Windiws 8 开发人员文档中也没有找到任何内容。

谢谢你。

4

2 回答 2

3

在网格中,a*意味着它将与其他*列(或行)平等地共享可用空间。这里有一些很好的 WPF 示例来说明它是如何工作

这里的文档:

星号

一种约定,您可以根据该约定调整行或列的大小以占用 Grid 中剩余的可用空间。星号大小始终包含星号字符 ( ),并且可选地在星号之前加上一个整数值,该整数值指定与其他可能的星号大小相比的加权因子(例如 3)。有关星号大小的更多信息,请参阅网格。

于 2012-10-02T03:11:02.607 回答
2

在具有多列的网格中,* size 列划分剩余空间。例如,假设一个 300 像素宽的网格有 3 列(150 像素、120 像素和 1*)。

计算如下:

remainder = (300 - 150 - 120)

由于余数是 30px,1* 列是 30px 宽

现在添加一些列并将宽度修改为 (35px, 85px, 2*, 1*, 3*)

重新计算:

remainder = (300 - 35 - 85)

在这种情况下,余数为 180 像素,因此每个 * 列根据其权重数拆分剩余像素。

factor = (180/ (2 + 1 + 3)) 
factor = 30px

因此 2* 列是 60px,1* 列是 30px,3* 列是 90px

300 == 35 + 85 + 60 + 30 + 90 

当然,同样的原则也适用于行大小。

当网格调整大小时,* 列将新的剩余大小分开。但它们在其他 * 尺寸项目之间保持相同的尺寸比例。在示例中,3* 列的宽度始终是 1* 列的 3 倍。

于 2012-10-16T09:40:54.593 回答