我目前正在开发Windows 8 Metro / Modern UI应用程序。现在,我正在使用Expression Blend for Visual Studio中的界面。
我的问题是:在调整网格列等UI元素的大小时,我可以使用像素,自动或星形。在这种情况下,什么是明星?谷歌搜索没有任何结果,我在Windiws 8开发者文档中找不到任何内容。
谢谢。
答案 0 :(得分:3)
在网格中,*
表示它将与其他*
列(或行)平等地共享可用空间。有一些很好的WPF示例说明了它的工作原理here。
来自文档here:
starSizing
一种约定,您可以通过该约定调整行或列的大小 网格中剩余的可用空间。星级尺寸总是包括 星号字符(),可选择在星号前面加上 一个整数值,指定加权因子与其他因子 可能的星形大小(例如,3 )。有关的更多信息 星大小,见网格。
答案 1 :(得分:2)
在具有多列的网格中,* size列将剩余空间分开。例如,假设一个300px宽的网格,有3列(150px,120px和1 *)。
计算结果如下:
remainder = (300 - 150 - 120)
由于余数为30px,因此1 *列的宽度为30px
现在添加一些列并将宽度修改为(35px,85px,2 *,1 *,3 *)
重做计算:
remainder = (300 - 35 - 85)
在这种情况下,余数为180px,因此每个*列根据其加权数分割剩余的像素。
factor = (180/ (2 + 1 + 3))
factor = 30px
因此2 *列为60px,1 *列为30px,3 *列为90px
300 == 35 + 85 + 60 + 30 + 90
当然,相同的原则适用于行大小调整。
当网格调整大小时,*列会占用新的剩余大小。但是它们在其他*尺寸的物品之间保持相同的尺寸比例。在示例中,3 *列的宽度始终是1 *列的3倍。