- 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等按钮和文本框控件。