- Windows 10 开发教程
- Windows 10 - 主页
- Windows 10 - 简介
- Windows 10 – UWP
- Windows 10 – 第一个应用程序
- Windows 10 - 商店
- Windows 10 - XAML 控件
- Windows 10 - 数据绑定
- Windows 10 - XAML 性能
- Windows 10 - 自适应设计
- Windows 10 - 自适应 UI
- Windows 10 - 自适应代码
- Windows 10 - 文件管理
- Windows 10 - SQLite 数据库
- Windows 10 – 通讯
- Windows 10 - 应用程序本地化
- Windows 10 - 应用程序生命周期
- Windows 10 - 后台执行
- Windows 10 - 应用程序服务
- Windows 10 - 网络平台
- Windows 10 - 互联体验
- Windows 10 - 导航
- Windows 10 - 网络
- Windows 10 - 云服务
- Windows 10 - 动态磁贴
- Windows 10 - 共享合同
- Windows 10 - 移植到 Windows
- Windows 10 有用资源
- Windows 10 - 快速指南
- Windows 10 - 有用的资源
- Windows 10 - 讨论
Windows 10 开发 - XAML 控件
XAML 代表可扩展应用程序标记语言。它是一个用户界面框架,提供了支持 Windows UI 开发的广泛控件库。其中一些具有视觉表示,例如按钮、文本框和文本块等;而其他控件则用作其他控件或内容的容器,例如图像等。所有XAML控件都继承自“System.Windows.Controls.Control”。
XAML 新兴故事
XAML 用于许多重要的 Microsoft 平台,例如 Windows Presentation Foundation (WPF)、Silverlight 以及现在的 Windows 应用程序。现在,Microsoft Office 2016 也是 UWP 应用程序家族。XAML 是一个丰富的平台,它提供了可在 UWP 应用程序中使用的非常酷的功能和控件。
控件的完整继承层次如下所示。
布局控件
控件的布局对于应用程序的可用性非常重要和关键。它用于在应用程序中排列一组 GUI 元素。选择布局面板时需要考虑一些重要事项 -
- 子元素的位置。
- 子元素的大小。
- 将重叠的子元素分层。
下面给出了布局控件列表-
编号 | 控制和说明 |
---|---|
1 | 堆栈面板 StackPanel是 XAML 中的一个简单且有用的布局面板。在堆栈面板中,子元素可以根据方向属性水平或垂直排列在单行中。 |
2 | 包裹面板 在WrapPanel中,子元素根据方向属性按从左到右或从上到下的顺序放置。StackPanel 和 WrapPanel 之间的唯一区别在于,它不会将所有子元素堆叠到一行中,而是在没有剩余空间的情况下将剩余元素包装到另一行中。 |
3 | 停靠面板 DockPanel定义一个区域来相对于彼此排列子元素,无论是水平还是垂直。使用 DockPanel,您可以使用 Dock 属性轻松地将子元素停靠到顶部、底部、右侧、左侧和中心。 使用LastChildFill属性,最后一个子元素将填充剩余空间,无论为该元素设置任何其他停靠值如何。 |
4 | 帆布 Canvas是基本布局面板,可以使用相对于任何一侧(例如左、右、上、下)的坐标显式定位子元素。通常,Canvas 用于 2D 图形元素(例如椭圆形、矩形等),但不用于 UI 元素,因为指定绝对坐标会在 XAML 应用程序中调整大小、本地化或缩放时带来麻烦。 |
5 | 网格 网格提供了一个灵活的区域,由行和列组成。在 Grid 中,子元素可以以表格形式排列。可以使用Grid.Row和Grid.Column属性将元素添加到任何特定的行和列。 |
6 | 拆分视图 SplitView代表一个有两个视图的容器;一个视图用于主要内容,另一个视图通常用于导航命令。 |
7 | 相关面板 relativepanel定义了一个区域,您可以在其中相对于彼此或父面板定位和对齐子对象。 |
8 | 视图框 ViewBox定义了一个内容装饰器,可以拉伸和缩放单个子项以填充可用空间。 |
9 | 翻转视图 FlipView表示一次显示一个项目的项目控件,并启用“翻转”Behave来遍历其项目集合。 |
10 | 网格视图 GridView是一个以行和列的形式呈现项目集合的控件,并且可以水平滚动。 |
用户界面控件
以下是最终用户可见的 UI 控件列表。
编号 | UI 控件和说明 |
---|---|
1 | 按钮 响应用户输入的控件 |
2 | 日历 表示一个控件,使用户能够使用可视日历显示来选择日期。 |
3 | 复选框 用户可以选择或清除的控件。 |
4 | 组合框 用户可以从中进行选择的项目下拉列表。 |
5 | 上下文菜单 获取或设置每当通过用户界面 (UI) 从此元素内请求上下文菜单时应显示的上下文菜单元素。 |
6 | 数据网格 表示在可自定义网格中显示数据的控件。 |
7 | 日期选择器 允许用户选择日期的控件。 |
8 | 对话框 应用程序还可以显示附加窗口,以便用户收集或显示重要信息。 |
9 | 飞出去 表示显示轻量级 UI 的控件,该 UI 可以是信息,也可以是需要用户交互的。与对话框不同的是,通过单击或点击弹出窗口外部、按设备的后退按钮或按“Esc”键,可以轻松关闭弹出窗口。 |
10 | 图像 呈现图像的控件。 |
11 | 列表框 一个控件,显示用户可以从中选择的内联项目列表。 |
12 | 菜单 表示 Windows 菜单控件,使您能够分层组织与命令和事件处理程序关联的元素。 |
13 | 菜单弹出窗口 表示显示命令菜单的弹出按钮。 |
14 | 密码盒 用于输入密码的控件。 |
15 | 弹出窗口 在应用程序窗口范围内的现有内容之上显示内容。 |
16 | 进度条 通过显示条来指示进度的控件。 |
17 号 | 进度环 通过显示环来指示不确定进度的控件。 |
18 | 单选按钮 允许用户从一组选项中选择单个选项的控件。 |
19 | 富编辑框 一种控件,允许用户编辑包含格式化文本、超链接和图像等内容的富文本文档。 |
20 | 滚动查看器 允许用户平移和缩放其内容的容器控件。 |
21 | 搜索框 允许用户输入搜索查询的控件。 |
22 | 滑块 一种控件,允许用户通过沿轨道移动 Thumb 控件来从一系列值中进行选择。 |
23 | 文本块 显示文本的控件。 |
24 | 时间选择器 允许用户设置时间值的控件。 |
25 | 切换按钮 可以在两种状态之间切换的按钮。 |
26 | 工具提示 显示元素信息的弹出窗口。 |
27 | 窗户 根窗口提供最小化/最大化选项、标题栏、边框和关闭按钮。 |
下面给出了一个示例,其中包含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; } } }
当上面的代码被编译并执行时,您将看到以下窗口 -
当您单击左上角的汉堡按钮时,它将打开/关闭SplitView窗格。
在SplitView窗格中,您可以看到Flyout、MenuFlyout和FlipView控件。
在SplitView Content中,可以看到Hyperlink、Relative Panel、ViewBox等按钮和文本框控件。