1.
Grid
控制項Grid定義由列和行組成的網格布局。Grid.RowDefinitions和Grid.ColumnDefinitions集合分別包含RowDefinition和ColumnDefinition用來定義行和列的寬度和高度,行列的數量是根據集合中子物件的數量被定義的。各子物件中Grid.Row和Grid.Column屬性用於定義在網格中的位置。
2.
StackPanel
控制項StackPanel控制項可以使布局內的各子物件以水平或垂直的方式順序排列。通過設定Orientation="Vertical"或者Orientation="Horizontal"來定義相片順序。預設情況以垂直方向排列子物件。
3.
Canvas 以絕對位置的方式布局。通過設定子物件Canvas.Left 指定對象與所在的 Canvas 的左側之間的距離(x 座標);Canvas.Top 指定對象與所在的 Canvas 的頂部之間的距離(y 座標)。 Canvas 可以包含子物件,這些子物件呈現在 Canvas 地區中,是通過座標來顯式定位的。由於絕對位置不考慮瀏覽器視窗的大小或瀏覽器大小調整,因此一般最好使用 Grid 或 StackPanel 作為容器。
由於 Canvas 為 UIElement 類型,因此可以嵌套 Canvas 對象。
很多情況下,Canvas 僅僅用作其他對象的容器,而沒有任何可見屬性。如果滿足以下任一條件,Canvas 即不可見:
<Canvas Width="300" Height="300" Background="White">
<Canvas Width="250" Height="250" Canvas.Left="30"
Canvas.Top="30" Background="blue">
<Rectangle Canvas.Left="30" Canvas.Top="30"
Fill="red" Width="200" Height="200" />
</Canvas>
</Canvas>
4.
ScrollViewer ScrollViewer控制項用來表示可包含其他可見元素的可捲動區域。設定HorizontalScrollBarVisibility 和VerticalScrollBarVisibility屬性可以控制水平捲軸和垂直捲軸的狀態。
5.
Border控制項不太適用於布局,但是確實是容器控制項。
Border 控制項可為另一控制項提供邊框和/或背景。一個邊框只能包含一個子項目。
Border
下面的樣本示範如何在 StackPanel 中包含的多個 TextBlock 對象周圍放置一個邊框。
<Border BorderThickness="5" BorderBrush="Blue" >
<StackPanel Grid.Column="0" Grid.Row="0">
<TextBlock Text="One"/>
<TextBlock Text="Two"/>
<TextBlock Text="Three"/>
</StackPanel>
</Border>
6. TextBlock
文本控制項
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/><TextBlock x:Name="PageTitle" Text="page name" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 樣本中的TextBlock控制項用於顯示少量文本,Text 屬性對應常值內容。Text 屬性可以在XAML檔案裡動態定義,也可以在C#代碼中隨時修改。利用x:Name屬性定義的名稱來確定要修改的TextBlock控制項。在這個樣本裡,可以通過給ApplicationTitle.Text設定新的字串來改變常值內容。TextBlock控制項無法接收使用者輸入的文本,也不太適合過長文本的顯示。TextBox控制項可以勝任此類任務,代碼如下: <TextBox Height="72" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="460" /> MaxLength屬性可以控制文本的字串長度。對於密碼輸入,還可以使用PasswordBox控制項,代碼如下: <PasswordBox Height="72" HorizontalAlignment="Left" Margin="10,92,0,0" Name="passwordBox1" VerticalAlignment="Top" Width="460" /> PasswordBox 控制項還可以使用PasswordChar定義密碼顯示的字元。
7. Button和HyperlinkButton
按鈕控制項按鈕控制項包含Button控制項和HyperlinkButton控制項,HyperlinkButton控制項想相比Button控制項可以不必處理單擊事件就可以自動導航到為 NavigateUri 指定的Uri。 <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="10,174,0,0" Name="button1" VerticalAlignment="Top" Width="160" /><HyperlinkButton Content="HyperlinkButton" Height="30" HorizontalAlignment="Left" Margin="176,195,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="200" /> Button控制項和HyperlinkButton控制項都可以使用Content屬性來設定按鈕上的文字,除此之外,HyperlinkButton控制項支援NavigateUri屬性來定義目標Uri。
8. RadioButton CheckBox
選擇控制項RadioButton用於一組選項中選擇一個選項,RadioButton有兩種把多個RadioButton控制項分成一組。放置到同一個父控制項內,或者設定GroupName屬性。使用GroupName屬性也可以把同一個父控制項內的RadioButton分為多組。同一組中的RadioButton會相互排斥,也就是說使用者只能使一個按鈕的狀態為選中狀態。 <RadioButton Content="RadioButton" Height="72" HorizontalAlignment="Left" Margin="10,10,0,0" Name="radioButton1" VerticalAlignment="Top" /> RadioButton可以設定為選中,未被選中,禁用狀態。預設為未被選中狀態,設定IsChecked="True"可把狀態變更為選中,設定IsEnabled="False"可以把狀態變更為禁用。CheckBox用於選擇多個選項。同RadioButton一樣,可以通過設定IsChecked和IsEnabled來控制狀態。 <CheckBox Content="CheckBox" Height="72" HorizontalAlignment="Left" Margin="10,166,0,0" Name="checkBox1" VerticalAlignment="Top" /> CheckBox設定IsThreeState="True"後可以增加一種狀態不確定狀態。Slider適合在一個範圍內選擇一個值。 <Slider Height="84" HorizontalAlignment="Left" Margin="0,326,0,0" Name="slider1" VerticalAlignment="Top" Width="460" />Maximum和Minimum屬性用來定義最大值和最小值。Value屬性是Maximum和Minimum之間的一個值,用來定義Slider當前的值。預設的情況下,Minimum="0" Maximum="10"。使用者可以通過拖動來改變Slider的值,SmallChange屬性可以定義拖動的精度,也可以通過點擊來改變Slider的值,LargeChange屬性來定義值改變的精度。根據介面布局的需要,利用Orientation屬性可以設定水平和垂直方向。