2009-11-20 30 views

回答

186

在WPF網格,Width="*"Height="*"意味着比例大小。
例如:以得到30%至塔1和70%至柱2 -

<ColumnDefinition Width="3*" /> 
<ColumnDefinition Width="7*" /> 

enter image description here

的行

並且同樣 -

<RowDefinition Height="3*" /> 
<RowDefinition Height="7*" /> 

數字不必是整數。
如果RowDefinition的寬度(ColumnDefinition的高度)被忽略,則隱含1 *。
在這個例子中,第1列比列寬1.5倍2 -

<ColumnDefinition Width="1.5*" /> 
<ColumnDefinition /> 

Column 1: 1.5*, Column 2 1* (implied)

可以混合自動調整,並用*(比例)的寬度固定的寬度;在這種情況下,*列分配到其餘已算出的自入固定寬度後 -

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> <!-- Auto-fit to content, 'Hi' --> 
    <ColumnDefinition Width="50.5" /> <!-- Fixed width: 50.5 device units) --> 
    <ColumnDefinition Width="69*" /> <!-- Take 69% of remainder --> 
    <ColumnDefinition Width="31*"/> <!-- Take 31% of remainder --> 
</Grid.ColumnDefinitions> 
<TextBlock Text="Hi" Grid.Column="0" /> 

enter image description here

+6

優秀的答案! – smwikipedia 2013-10-29 04:16:49

+1

具有完整意義。 – user3260977 2014-11-13 20:32:36

29

如果有2列是這樣的:

<ColumnDefinition Width="10*"/> 
<ColumnDefinition Width="*"/> 

它意味着第一列是比第二寬10倍。這就像是說「10部分第1欄和1部分第2欄」。

這很酷的事情是,你的專欄將按比例調整大小。其他選項是:

//Take up as much space as the contents of the column need 
<ColumnDefinition Width="Auto"/> 
//Fixed width: 100 pixels 
<ColumnDefinition Width="100"/> 

希望幫助!

2

此外,如果這是單位大小的元素,則可以省略「*」。因此,使用Pwninstein的代碼示例,這純粹是:

<ColumnDefinition Width="10*/> 
<ColumnDefinition/> 
6

我們以下面的例子.....

一格和有3列,並且每個含有大小的一個按鈕100

enter image description here

XAML代碼是...

<Grid x:Name="LayoutRoot" Width="600"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="3*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="100" /> 
    <Button Content="Button1" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button2" VerticalAlignment="Top" Width="100" Grid.Column="1" /> 
    <Button Content="Button2" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button3" VerticalAlignment="Top" Width="100" Grid.Column="2" /> 
</Grid> 

但實際上它的尺寸....

<Grid.ColumnDefinitions> 
     <ColumnDefinition Width="375" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="125" /> 
</Grid.ColumnDefinitions> 

結論:

電網的總大小爲600

「自動」:列被重新調整大小與它的包含的內容。(第二列有寬度爲100的按鈕)

「*」:第一列寬度是第三列的3倍。