2011-08-05 27 views
90

*(星號)在下面的XAML中是什麼意思?*(星號)在WPF ColumnDefinition中的含義?

<ColumnDefinition Width="0.07*"/> 
<Grid Height="100" HorizontalAlignment="Left" 
     Margin="102,134,0,0" 
     Name="grid1" VerticalAlignment="Top" 
     Width="354"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="40*" /> 
     <ColumnDefinition Width="314*" /> 
    </Grid.ColumnDefinitions> 
</Grid> 
+0

如果我的第二列寬是第一和第三列寬的雙人牀是三人第一次那我該怎麼使用Astrik – Shashank

回答

137

當在WPF網格定義列可以設置寬度爲的三個可能的值之一:

  • 一個固定的寬度,
  • Auto - 列將一樣寬的必要以適合成爲其孩子,或
  • *(星)佔用任何可用的剩餘空間

*由多個前綴(默認爲1如果沒有指定號碼)。可用空間按照前綴數量的比例在星號列中分配。

如果你有這樣的定義

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.07*"/> 
    <ColumnDefinition Width="0.93*"/> 
</Grid.ColumnDefinitions> 

第一列將獲得總面積的7%可用,第二列將得到93%。在另一方面,如果你有這樣的定義:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.07*"/> 
    <ColumnDefinition Width="0.14*"/> 
</Grid.ColumnDefinitions> 

第一列將獲得1/3的可用空間的第二2/3。


在你是格柵的寬度爲354和兩列的比例是40和314,你得到下面的列寬的具體情況:

 
First column width = 40/(40 + 314)*354 = 40 
Second coulmn width = 314/(40 + 314)*354 = 314 

星寬度最好使用當網格的寬度不固定時。當網格調整大小後,列將按照星形寬度的指定按比例縮放。在你的情況下,網格的寬度是固定的,你可以很容易地使用固定寬度的列。

如果你想有一個佈局,其中第二列是雙重的第一和第三列的寬度是三倍的寬度首先你需要這樣的定義:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="2*"/> 
    <ColumnDefinition Width="3*"/> 
</Grid.ColumnDefinitions> 

如果電網的總寬度是300你得到列寬50,100和150.如果網格的總寬度是600你得到列寬100,200和300.依此類推。

2

及其0.07比任何其他星形寬度柱 - 即,如果另一ColomnDefinition具有0.14的寬度則該列是雙寬度=它的所有關於口糧

1

它創建使用比率列大小。如果你有另一個定義,如<ColumnDefinition Width="0.03*"/>,第一列將佔用70%的空間,第二列佔用30%。

0

[..]表示爲可用空間的加權比例的值。