Windows 10 開發 - XAML 控制元件



XAML 代表可擴充套件應用程式標記語言 (Extensible Application Markup Language)。它是一個使用者介面框架,提供廣泛的控制元件庫,支援 Windows 的 UI 開發。其中一些控制元件具有視覺化表示,例如按鈕、文字框和文字塊等;而其他控制元件則用作其他控制元件或內容(例如影像等)的容器。所有 XAML 控制元件都繼承自“System.Windows.Controls.Control”

XAML 新興故事

XAML 用於許多重要的 Microsoft 平臺,例如 Windows Presentation Foundation (WPF)、Silverlight,現在還包括 Windows 應用。現在,Microsoft Office 2016 也是 UWP 應用家族的一員。XAML 是一個豐富的平臺,它提供非常酷的功能和控制元件,可用於 UWP 應用程式。

下面顯示控制元件的完整繼承層次結構。

Inheritance Hierarchy

佈局控制元件

控制元件佈局對於應用程式可用性非常重要且至關重要。它用於在應用程式中排列一組 GUI 元素。選擇佈局面板時,需要考慮某些重要事項:

  • 子元素的位置。
  • 子元素的大小。
  • 彼此重疊的子元素的分層。

下面列出了佈局控制元件

序號 控制元件和描述
1

StackPanel

StackPanel 是 XAML 中一個簡單且有用的佈局面板。在 StackPanel 中,子元素可以基於 orientation 屬性沿水平或垂直方向單行排列。

2

WrapPanel

WrapPanel 中,子元素按順序從左到右或從上到下排列,這取決於 orientation 屬性。StackPanel 和 WrapPanel 之間的唯一區別在於,它不會將所有子元素堆疊到單行中,如果空間不足,它會將剩餘的元素換行。

3

DockPanel

DockPanel 定義一個區域,用於相對於彼此(水平或垂直)排列子元素。使用 DockPanel,您可以輕鬆地使用 Dock 屬性將子元素停靠到頂部、底部、右側、左側和中心。

使用LastChildFill 屬性,當為該元素設定時,最後一個子元素將填充剩餘空間,而不管任何其他停靠值。

4

Canvas

Canvas 是基本佈局面板,其中子元素可以使用相對於任何側邊(例如左側、右側、頂部和底部)的座標顯式定位。Canvas 通常用於二維圖形元素(例如 Ellipse、Rectangle 等),但不適用於 UI 元素,因為在 XAML 應用程式中指定絕對座標會在調整大小、本地化或縮放時帶來麻煩。

5

Grid

Grid 提供一個靈活的區域,該區域由行和列組成。在 Grid 中,子元素可以表格形式排列。可以使用Grid.RowGrid.Column 屬性將元素新增到任何特定行和列。

6

SplitView

SplitView 表示一個包含兩個檢視的容器;一個檢視用於主內容,另一個檢視通常用於導航命令。

7

RelativePanel

RelativePanel 定義一個區域,您可以在其中相對於彼此或父面板定位和對齊子物件。

8

ViewBox

ViewBox 定義一個內容裝飾器,可以拉伸和縮放單個子元素以填充可用空間。

9

FlipView

FlipView 表示一個專案控制元件,一次顯示一個專案,並啟用“翻轉”行為來遍歷其專案集合。

10

GridView

GridView 是一個控制元件,它以行和列的形式顯示專案的集合,並且可以水平滾動。

UI 控制元件

這是一個 UI 控制元件列表,終端使用者可以看到這些控制元件。

序號 UI 控制元件和描述
1

Button

響應使用者輸入的控制元件

2

Calendar

表示一個控制元件,使使用者能夠透過視覺化日曆顯示選擇日期。

3

CheckBox

使用者可以選擇或清除的控制元件。

4

ComboBox

專案的下拉列表,使用者可以從中進行選擇。

5

ContextMenu

獲取或設定上下文選單元素,該元素應在透過使用者介面 (UI) 從此元素內部請求上下文選單時出現。

6

DataGrid

表示一個控制元件,該控制元件以可自定義的網格顯示資料。

7

DatePicker

允許使用者選擇日期的控制元件。

8

對話方塊

應用程式還可以顯示其他視窗,以引導使用者收集或顯示重要資訊。

9

Flyout

表示一個控制元件,該控制元件顯示輕量級 UI,這些 UI 要麼是資訊,要麼需要使用者互動。與對話方塊不同,可以透過單擊或點選 Flyout 外部、按下裝置的返回按鈕或按下“Esc”鍵來輕按關閉 Flyout。

10

Image

顯示影像的控制元件。

11

ListBox

顯示使用者可以從中選擇的專案內聯列表的控制元件。

12

選單

表示一個 Windows 選單控制元件,使您可以分層組織與命令和事件處理程式關聯的元素。

13

MenuFlyout

表示顯示命令選單的彈出選單。

14

PasswordBox

用於輸入密碼的控制元件。

15

Popup

在應用程式視窗的範圍內,在現有內容之上顯示內容。

16

ProgressBar

透過顯示條形指示進度的控制元件。

17

ProgressRing

透過顯示環形指示不確定進度的控制元件。

18

RadioButton

允許使用者從一組選項中選擇單個選項的控制元件。

19

RichEditBox

允許使用者編輯富文字文件的控制元件,其內容包括格式化文字、超連結和影像。

20

ScrollViewer

允許使用者平移和縮放其內容的容器控制元件。

21

SearchBox

允許使用者輸入搜尋查詢的控制元件。

22

Slider

允許使用者透過沿軌道移動 Thumb 控制元件來從一系列值中進行選擇的控制元件。

23

TextBlock

顯示文字的控制元件。

24

TimePicker

允許使用者設定時間值的控制元件。

25

ToggleButton

可以在兩種狀態之間切換的按鈕。

26

ToolTip

顯示元素資訊的彈出視窗。

27

Window

提供最小化/最大化選項、標題欄、邊框和關閉按鈕的根視窗。

下面是一個示例,其中包含SplitView 中不同型別的控制元件。在 XAML 檔案中,建立了具有某些屬性和事件的不同控制元件。

<Page 
   x:Class = "UWPControlsDemo.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "using:UWPControlsDemo" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d">
   
   <Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
      <StackPanel Margin = "20"> 
		
         <StackPanel Orientation = "Horizontal"> 
			
            <ToggleButton x:Name = "HamburgerButton" FontFamily = "Segoe MDL2 Assets"
               Content = "" Checked = "HandleCheck" Unchecked = "HandleUnchecked" 
               HorizontalAlignment = "Center"/> 
					
            <AppBarButton Icon = "Like" />
            <AppBarButton Icon = "Dislike" /> 
            <AppBarSeparator/> 
            <AppBarButton Icon = "Accept" /> 
            <AppBarButton Icon = "Add" /> 
				
         </StackPanel> 
			
         <SplitView x:Name = "splitView" DisplayMode = "Inline" 
            OpenPaneLength = "296"> 
				
            <SplitView.Pane> 
               <StackPanel> 
                  <TextBlock Text = "SplitView Pane" FontSize = "36" 
                     VerticalAlignment = "Center" HorizontalAlignment = "Center" 
                     Margin = "10"/> 
							
                  <Button Content = "Options" Margin = "10"> 
						
                     <Button.Flyout> 
                        <MenuFlyout> 
                           <MenuFlyoutItem Text = "Reset"/> 
                           <MenuFlyoutSeparator/> 
                           <MenuFlyoutItem Text = "Repeat"/> 
                           <MenuFlyoutItem Text = "Shuffle"/> 
                        </MenuFlyout> 
                     </Button.Flyout> 
							
                  </Button> 
						
               </StackPanel> 
            </SplitView.Pane> 
					
            <StackPanel>
				
               <TextBlock Text = "SplitView Content" FontSize = "36" 
                  VerticalAlignment = "Center" HorizontalAlignment = "Center" 
                  Margin = "10"/>
						
               <Border BorderThickness = "3" BorderBrush = "Red" Margin = "5"> 
                  <StackPanel Orientation = "Horizontal"> 
                     <TextBlock Text = "Hyperlink example" Margin = "5"/> 
                     <HyperlinkButton Content = "www.microsoft.com" 
                        NavigateUri = "http://www.microsoft.com"/> 
                  </StackPanel> 
               </Border> 
					
               <RelativePanel BorderBrush = "Red" BorderThickness = "2"  
                  CornerRadius = "10" Padding = "12" Margin = "5"> 
						
                  <TextBlock x:Name = "txt" Text = "Relative Panel example" 
                     RelativePanel.AlignLeftWithPanel = "True" 
                     Margin = "5,0,0,0"/> 
							
                  <TextBox x:Name = "textBox1" RelativePanel.RightOf = "btn" 
                     Margin = "5,0,0,0"/> 
							
                  <Button x:Name = "btn" Content = "Name"  
                     RelativePanel.RightOf = "txt" Margin = "5,0,0,0"/> 
							
               </RelativePanel> 
					
               <FlipView Height = "400" Margin = "10" Width = "400"> 
                  <Image Source = "Images/DSC_0104.JPG"/> 
                  <Image Source = "Images/DSC_0080.JPG"/> 
                  <Image Source = "Images/DSC_0076.JPG"/> 
                  <Image Source = "Images/thGTF7BWGW.jpg"/> 
               </FlipView>
					
            </StackPanel> 
				
         </SplitView> 
			
      </StackPanel> 
		
   </Grid> 
	
</Page> 

下面是 C# 中的事件實現。

using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Media;
  
// The Blank Page item template is documented at
   http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
 
namespace UWPControlsDemo {
 
   /// <summary> 
      /// An empty page that can be used on its own or navigated to within a Frame. 
   /// </summary> 
	
   public sealed partial class MainPage : Page {
    
      public MainPage() {
         this.InitializeComponent(); 
      } 
		
      private void HandleCheck(object sender, RoutedEventArgs e) { 
         splitView.IsPaneOpen = true; 
      }
		
      private void HandleUnchecked(object sender, RoutedEventArgs e) {
         splitView.IsPaneOpen = false; 
      }
		
   }
	
} 

編譯並執行上述程式碼後,您將看到以下視窗:

Split View Content

單擊左上角的漢堡按鈕,將開啟/關閉SplitView 面板。

Split View

SplitView 面板中,您可以看到FlyoutMenuFlyoutFlipView 控制元件。

SplitView 內容中,您可以看到超連結、相對面板、ViewBox 和其他按鈕和文字框控制元件。

廣告
© . All rights reserved.