轉(zhuǎn)帖|其它|編輯:郝浩|2011-04-06 13:41:57.000|閱讀 3698 次
概述:WPF布局控件都是派生自System.Windows.Controls.Panel抽象類的面板,Panel類繼承自 FrameworkElement,Panel類本身并沒有什么特別的,但是WPF中提供了許多用于布局的控件都繼承自Panel類,如 StackPanel控件,WrapPanel,DockPanel,Grid,UniformGrid,Canvas等 。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
WPF布局控件都是派生自System.Windows.Controls.Panel抽象類的面板,Panel類繼承自FrameworkElement,Panel類本身并沒有什么特別的,但是WPF中提供了許多用于布局的控件都繼承自Panel類,如StackPanel控件,WrapPanel,DockPanel,Grid,UniformGrid,Canvas等 。
接下來對(duì)布局控件做簡單介紹:
1.StackPanel控件(將子元素排列成一行(可沿水平或垂直方向))
<StackPanel Name="stackPanel1" >
<Button Content="Button" Name="button1"/>
<Button Content="Button" Name="button2" />
<Button Content="Button" Name="button3" />
<Button Content="Button" Name="button4" />
</StackPanel>
默認(rèn)情況下StackPanel面板從上到下地排列元素,使每個(gè)元素的高度適合顯示的內(nèi)容,可以通過設(shè)置Orientation屬性為Horizontal為水平
在這個(gè)例子中所有的元素都被拉伸到StackPanel面板的整個(gè)寬度,這也是窗口的寬度,加寬窗口StackPanel也會(huì)變寬,并且按鈕也會(huì)拉伸他們自己以適應(yīng)自己寬度變化。
StackPanel控件常見幾個(gè)屬性:
(1)public HorizontalAlignment HorizontalAlignment { get; set; }
(獲取或設(shè)置在父元素(如面板或項(xiàng)控件)中構(gòu)成此元素時(shí)應(yīng)用于此元素的水平對(duì)齊特征),它是一個(gè)枚舉值,默認(rèn)情況下為Stretch完全充滿整個(gè)容器。
(2)public VerticalAlignment VerticalAlignment { get; set; }
(獲取或設(shè)置在父元素(如面板或項(xiàng)控件)中組合此元素時(shí)應(yīng)用于此元素的垂直對(duì)齊特征。)默認(rèn)情況下為Stretch
類型:System.Windows.VerticalAlignment
(3)public Thickness Margin { get; set; }(獲取和設(shè)置元素的外邊距)
類型:System.Windows.Thickness
提供元素的邊距值。 默認(rèn)值是所有屬性都等于 0,默認(rèn)的左,上,右,下。如果將Margin="15",這種設(shè)置將所有的邊距都設(shè)置成相同的寬度15,margin="20,50"這種設(shè)法將左右外邊距設(shè)置成20,上下50
(4)Height設(shè)置元素的高度,另外兩個(gè)MinHeight和WaxHeight分別為最小尺寸和最大尺寸,如果這三個(gè)值存在沖突,首先必須采用 MinHeight;然后采用 MaxHeight;最后,如果 Height 位于限制之內(nèi),則采用該值
(5)Width同樣和上面Height屬性類似。
所有的上面這些屬性都是繼承自FrameworkElement基類,所以在WPF中使用的所有圖形元素都支持這些屬性。
2.WarpPanel面板和DockPanel面板
WarpPanel:從左至右按順序位置定位子元素,在包含框的邊緣處將內(nèi)容斷開至下一行。
可以通過 Orientation設(shè)置其排列方式,該控件主要用來控制用戶界面布局的細(xì)節(jié)。
DockPanel
<DockPanel>
<Button Content="Button" DockPanel.Dock="Left" />
<Button Content="Button" DockPanel.Dock="Bottom"/>
<Button Content="Button" DockPanel.Dock="Right"/>
<Button Content="Button" DockPanel.Dock="Top" />
<Button Content="Button" />
</DockPanel>
可以通過上面四個(gè)附加屬性來定義按鈕位于DockPanel的那個(gè)位置。因?yàn)樵赪PF中很少單獨(dú)的使用StackPanel,WrapPanel,DockPanel進(jìn)行布局,他們通常用于布局用戶界面的一部分,下面將介紹Grid面板
3.Grid面板
Grid面板是WPF中最強(qiáng)大的布局控件,是有行和列組成的網(wǎng)格,s類似于HTML中的table。
Grid面板通過使用對(duì)象填充Grid.RowDefinitions和Grid.ColumnDefinitions集合的方式來創(chuàng)建列和行。
<Grid x:Name="LayoutRoot" Background="DarkGray">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition ></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
上面創(chuàng)建了個(gè)三行兩列的表格。Grid表格中的所有行和列平均分配空間。
在單元格中放置控件可以通過Row和Column附加屬性來設(shè)置。
Grid控件支持三種改變尺寸的方式:
(1)<ColumnDefinition Width="100"></ColumnDefinition>絕對(duì)改變尺寸的方式,這種方式設(shè)置沒有什么用途,不夠靈活,難以處理文本的大小改變和包容器的大小改變。
(2)<ColumnDefinition Width="Auto"></ColumnDefinition>自動(dòng)改變尺寸,這種方式最有用。
(3)<ColumnDefinition Width="*"></ColumnDefinition>按比例尺寸改變。
Grid中使用RowSpan和Column這兩個(gè)屬性來跨行和跨列
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客園