Win10系列:UWP界面布局进阶3
与以往的Windows操作系统不同,Windows 10操作系统在正式版当中取消了任务栏中的"开始"按钮,将大部分的应用程序图标放置在开始屏中,同时将系统设置等常用功能整合到了Charms Bar中。移鼠标至屏幕的右上角或右下角,或同时按下"Windows+C"快捷键,可以看到在屏幕的右侧会出现一个功能栏,这就是Windows 10中的魔法栏。在魔法栏中共包含5个功能按钮:
- 搜索按钮,能搜索应用程序、系统设置、文件等等,还可以在已经安装的提供搜索功能的应用中进行搜索。
- 共享按钮,可以通过共享功能与好友轻松分享本地或网络中的文字、图片或文件等。
- 开始按钮,单击开始按钮可以在传统桌面或应用程序与开始屏之间进行切换。
- 设备按钮,单击设备按钮可以访问和管理与计算机连接的外部设备。
- 设置按钮,单击设置按钮可以看到在设置面板中包含了"控制面板"、"个性化"、"电源"等常用设置选项,其中"关机"按钮就在"电源"设置选项中。如果用户正在运行一个应用程序,在设置面板的顶部会显示与当前应用相关的设置选项。
下面通过一个示例介绍如何在开发Windows应用商店应用时向魔法栏中的设置面板里面添加与应用程序相关的设置选项,让用户可以通过魔法栏中的设置面板对应用程序的阅读模式进行设置。
启动Visual Studio,新建一个Windows应用商店的空白应用程序项目并将其命名为CharmsBarSetting,双击打开MainPage.xaml文件,在默认的Grid元素中添加一个Button按钮,设置其显示文本内容为"更改阅读模式",并为其定义单击事件处理方法。再添加两个TextBlock文本块,一个用来显示静态文本标题"添加设置选项",另一个用来显示当前的阅读模式,默认为日间阅读模式。对界面布局后的代码如下所示:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBlock x:Name="PageTitle" HorizontalAlignment="Left" Margin="421,259,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="61" Width="248" FontSize="40" Text="添加设置选项"/>
<TextBlock x:Name="ShowSettings" HorizontalAlignment="Left" Margin="421,315,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="33" Width="396" FontSize="30" Text="当前阅读模式为日间阅读模式"/>
<Button x:Name="ReadingModeSetting" Content="更改阅读模式" HorizontalAlignment="Left" Margin="421,356,0,0" VerticalAlignment="Top" Height="65" Width="224" FontSize="28" Click="ReadingModeSetting_Click"/>
</Grid>
页面效果如图5-5所示。

图5-5 添加设置选项页面效果
在编写后台代码前先来了解一下需要用到的类和方法:
- SettingsPane类,位于Windows.UI.ApplicationSettings命名空间下,使应用程序可以编辑设置面板中的设置选项,例如添加、移除命令或接收通知。
- IUICommand类,位于Windows.UI.Popups命名空间下,表示上下文菜单或对话框中的命令。
- SettingsCommand类,位于Windows.UI.ApplicationSettings命名空间下,表示设置面板中的设置选项。在初始化一个SettingsCommand类的对象时需要在其构造方法中传入三个参数,分别是settingsCommandId(选项ID)、label(选项文本)以及在选择设置选项后的事件处理方法。
打开MainPage.xaml.cs文件,为"更改阅读模式"按钮添加单击事件处理方法,代码如下所示:
private void ReadingModeSetting_Click(object sender, RoutedEventArgs e)
{
SettingsPane.GetForCurrentView().CommandsRequested += SetReadingModeCommandsRequested;
SettingsPane.Show();
}
在上面的方法中为SettingsPane类的GetForCurrentView().CommandsRequested事件注册事件处理方法SetReadingModeCommandsRequested,在用户单击"更改阅读模式"按钮打开设置面板时会调用这个方法向设置面板中添加设置选项,此时间处理方法会在后面做详细介绍。最后调用SettingsPane类的Show方法,这样在用户单击页面中的按钮时就会自动弹出设置面板。
下面开始定义SetReadingModeCommandsRequested方法,用来新建设置选项以及将设置选项添加到设置面板中,方法代码如下所示:
void SetReadingModeCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs eventArgs)
{
//清除上一次单击按钮时添加的设置选项
eventArgs.Request.ApplicationCommands.Clear();
//新建"日间阅读模式"设置选项并定义选择设置选项后要执行的操作
SettingsCommand daytimeModeCommand = new SettingsCommand("dayReadingModeSettings", "日间阅读模式", (IUICommand command) =>
{
ShowSettings.Text = "已切换为日间阅读模式";
});
//将"夜间阅读模式"设置选项添加至设置面板中
eventArgs.Request.ApplicationCommands.Add(daytimeModeCommand);
//新建"夜间阅读模式"设置选项并定义选择设置选项后要执行的操作
SettingsCommand nighttimeModeCommand = new SettingsCommand("nightReadingModeSettings", "夜间阅读模式", (IUICommand command) =>
{
ShowSettings.Text = "已切换为夜间阅读模式";
});
//将"夜间阅读模式"设置选项添加至设置面板中
eventArgs.Request.ApplicationCommands.Add(nighttimeModeCommand);
}
在上面的代码中,首先调用参数eventArgs的Request.ApplicationCommands.Clear方法清空设置面板中的设置选项,这样可以避免重复添加。接着实例化两个SettingsCommand类的对象用来定义设置面板中的设置选项。由于两个设置选项的添加方式相同,下面以添加"日间阅读模式"设置选项为例来介绍SettingsCommand类的使用,在实例化SettingsCommand类的对象时定义它的选项ID为"dayReadingModeSettings"、选项文本为"日间阅读模式",并在用户选择该设置选项时执行事件处理方法,设置界面上的文本框内容为"已切换为日间阅读模式",最后调用eventArgs对象的Request.ApplicationCommands.Add方法将"日间阅读模式"选项添加至设置面板中。按照相同的方式为设置面板添加"夜间阅读模式"设置选项。
运行程序,单击页面中的"更改阅读模式"按钮,会在屏幕的右侧弹出设置面板,效果如图5-6所示。

图5-6 设置面板效果
在设置面板中分别选择"日间阅读模式"选项和"夜间阅读模式"选项,会在页面中显示当前的阅读模式,效果如图5-7所示。


(1)切换为日间阅读模式 (2)切换为夜间阅读模式
图5-7 切换阅读模式
这样就实现了向设置面板中添加与当前应用相关的设置选项,并且在选择不同设置选项后执行对应的事件处理逻辑,完成所需要的功能设置。开发者可根据应用程序的需要将相关设置选项添加在设置面板当中。
Win10系列:UWP界面布局进阶3的更多相关文章
- Win10系列:UWP界面布局进阶1
全新的Windows 10 操作系统支持多种视图模式,用户可以根据需要选择不同的视图模式显示应用.当用户同时浏览或操作多个应用程序时,可以将应用视图调整为辅屏视图或填充视图,这样在一个屏幕中可以同时对 ...
- Win10系列:UWP界面布局进阶9
Grid Grid元素用来定义一个由行和列构成的网格,这是一个功能强大的布局容器,当新建一个页面时会默认选用Grid作为顶级布局元素,下面将通过三个示例来介绍Grid的使用方法. (1)定义Grid的 ...
- Win10系列:UWP界面布局进阶7
Canvas Canvas元素用于定义一个区域,可以向这个区域中添加不同的XAML界面元素.Canvas会对其内部的元素采用绝对布局方式进行布局,下面通过三个示例来介绍Canvas的使用方法. (1) ...
- Win10系列:UWP界面布局进阶6
在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来 ...
- Win10系列:UWP界面布局进阶5
提示框 在Windows应用商店应用程序中可以使用提示框来向用户显示提示信息,例如可以通过对话框来询问用户当前需要执行的操作,还可以通过弹出窗口来显示需要注意的信息.本节将向读者介绍如何在Window ...
- Win10系列:UWP界面布局进阶4
在开发Windows应用商店应用程序时,可以为页面中的界面元素添加快捷菜单,并设置与其相关的菜单项,用户通过选择快捷菜单中的菜单项来执行与被选择对象相关的操作.下面通过一个示例来介绍如何为页面中的一张 ...
- Win10系列:UWP界面布局进阶2
为了让用户可以在流畅浏览应用界面的同时提供与应用相关的功能按钮,Windows 10系统在用户界面当中引入了侧边栏,侧边栏可以在用户有需要对应用或者系统进行操作时显示,在没有需要操作的时候自动隐藏,并 ...
- Win10系列:UWP界面布局进阶8
StackPanel StackPanel能够以水平或垂直的方式整齐地排列位于其内部的元素.通过设置StackPanel的Orientation属性可以定义内部元素的排列方式,当将Orientatio ...
- Win10系列:UWP界面布局基础1
随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...
随机推荐
- 滑动验证 和滑动图片验证JS
滑动验证 先放效果图 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- JAVA基础知识总结:一到二十二全部总结
>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...
- 用原生js来处理跨域的数据(jsonp)
说明总结: 1.ajax和jsonp其实本质上是不同的东西.ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提 ...
- 第 8 章 容器网络 - 059 - 安装配置 flannel
安装配置 flannel 1) build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build. 不过用于做 build ...
- 第 3 章 镜像 - 013 - Dockerfile 构建镜像
第一个 Dockerfile FROM ubuntu RUN apt-get update && apt-get install -y vim 运行 docker build 命令构建 ...
- mongodb分享(二)
上次讲的:查询find\findone\pretty.条件操作符 (大于.小于.大于等于.小于等于.不等于,$type).limit\skip.sort.Db.postjson.getIndexes( ...
- Ruby 基础教程 第一部分总结
第一部分:Ruby 初体验 第一章: Ruby 初探 前言 开头的这一章节讲了一些十分基础的内容,重要的几个话题有: ruby 命令的执行方法 对象.方法的概念 常见的打印方法 ruby 命令的执行方 ...
- numpy学习:数据预处理
待处理的数据:150*150的灰度图片,除分析目标外,背景已经抹0 需要实现的目标:背景数字0不变,对其余数字做一个归一化处理 对list处理可以用 a=list(set(a)) # 实现了去除重复元 ...
- 『MXNet』第十一弹_符号式编程初探
一.符号分类 符号对我们想要进行的计算进行了描述, 下图展示了符号如何对计算进行描述. 我们定义了符号变量A, 符号变量B, 生成了符号变量C, 其中, A, B为参数节点, C为内部节点! mxne ...
- Loadrunner打不开浏览器以及卡死的各种问题
Loadrunner11.0启动WebTours之总结1 第一次安装LR11时,安装安组件后没有对电脑进行重启,直接安装的LR112 安装完毕LR后,录制脚本时发现不能启动IE11.百度发现LR支持I ...