這一節只是第2章的引子。
布局要使用Panel控件,有四種Panel,如下:
DockPanel,就是設置停靠位置布局模型。
StackPanel,提供一個從左至右或從上至下放置內容的堆棧模型。
Grid,提供一個允許進行 行/網格定位的模型。可使用表格。
Canvas,可精確定位。
其中,Grid是最常用的,vs2005自動生成的Page和window都默認帶有這個標簽:
Example 1-25. A sample usage of the Grid panel
<Window >
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">A</Button>
<Button Grid.Row="0" Grid.Column="2">C</Button>
<Button Grid.Row="1" Grid.Column="0" Grid.RowSpan="2">D</Button>
<Button Grid.Row="1" Grid.Column="1">E</Button>
<Button Grid.Row="1" Grid.Column="2">F</Button>
<Button Grid.Row="2" Grid.Column="1">H</Button>
<Button Grid.Row="2" Grid.Column="2">I</Button>
</Grid>
</Window>
這段程序產生一個3x3表格。注意,先定義行格式,再定義列格式,最後是往單元格放入button。
Example 1-26. Arranging an image and text in a grid
<Button Width="100" Height="100">
<Button.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="tom.png" />
<TextBlock
Grid.Row="1"
HorizontalAlignment="Center">Tom</TextBlock>
</Grid>
</Button.Content>
</Button>
這段程序是在圖片下面加了一行Caption,也是用的Grid下表格排版。
以上兩個例子都有Grid.Row=1這樣的語法——attached-property牽連屬性。即在Grid內部定義(),在 外部控件Button中指定屬性值。
牽連屬性的用途,事先不一定用Button填充單元格,這樣對所有控件就有任意性——暫時這麼想,因 為沒看第二章。