2009年7月31日 星期五

在WPF中配置版面 - Grid

在WPF裡面有很多的版面配置元件
像是Grid, DockPanel, WrapPanel...
其中Grid是比較單純的元件
可以想像成在word裡面的表格
將表格配置好,然後把相應的內容填入表格
這樣所有的東西的位置就會對齊好了

要新增一個Grid就在XAML裡面加入

<Grid>
</Grid>

也可以在C#裡面直接加入

public void AddGrid(Window w)
{
/// new a grid in corrosponding window
Grid g = new Grid();
w.Content = g;
}

再來是要把Grid切成想要的大小
這時候就需要藉由設定Grid的
ColumnDefinitions以及RowDefinitions來改變欄位配置
假設這時候需要切成三行
那就把剛剛插入XAML裡面的語法換成

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
</Grid>

或是在C#裡面改成

public void AddGrid(Window w)
{
/// new a grid in corrosponding window
Grid g = new Grid();

/// new two rows with height as star
RowDefinition r1 = new RowDefinition();
r1.Height = new GridLength(10, GridUnitType.Star);
RowDefinition r2 = new RowDefinition();
r2.Height = new GridLength(10, GridUnitType.Star);

/// add the rows into g
g.RowDefinitions.Add(r1);
g.RowDefinitions.Add(r2);

/// set g as the content of w
w.Content = g;
}

RowDefinition的Height值跟ColumnDefinition的Width
同樣都是GridLength的物件來表示
可以直接設成Auto, *, 或是直接給值
種類說明
Auto依照內容物改變大小
*依照欄數自動均分母窗體的大小,
可加比例,如2*即代表佔兩份的意思
直接定義該攔獲該行需的長寬,
可加單位,如 50px, 2in, 1cm, 或40pt

--
參考資料
HOW TO:在方格中加入資料列和資料行
GridLength Structure
GridUnitType Enumeration

沒有留言:

張貼留言