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 ...
随机推荐
- MYSQL常用函数(系统信息函数)
DATABASE() 返回当前数据库名 BENCHMARK(count,expr) 将表达式expr重复运行count次 CONNECTION_ID() 返回当前客户的连接ID FOUND_ ...
- cocos2dx AudioEngine在Android7上播放音效卡顿问题处理
1.此问题在cocos2dx 3.13/3.14版本(其它版本没有测试过)在Android7中使用AudioEngine的play2d函数播放音效时出现. 调试时出现如下提示: 2.论坛中相关讨论帖地 ...
- JAVA中”单引号”,“双引号”,“没有单引号和双引号”区别:
单引号引的数据 是char类型的——>单引号只能引一个字符(表示单个字符)双引号引的数据 是String类型的——>而双引号可以引0个及其以上(引用字符串) char类型的值用单引号引起来 ...
- python+opencv 运行环境搭建
1:安装pycharm,验证码你懂的 2:安装python3.5以上,或3.6,python2和3 的版本差异还蛮大 3:安装opencv,如下图 以上是方法一,还有之中方法是下载whl文件再手动安装 ...
- tchart5
https://blog.csdn.net/wuyuanjingni/article/details/8585810
- tomcat ----> 源码关联/编译/....
今天在搞Servlet时想看下tomcat Servlet-API.jar的源码,按照惯性思维用以往关联SSH2框架的源码的方式去做但是结果没有成功,尝试过换不同的文件夹,起初怀疑可能是路径太深关联不 ...
- Inotify&Sersync文件监视工具配置
一.Inotify介绍:一共安装2个工具(命令),即inotifywait和inotifywatchinotifywait:在被监控的文件或目录上等待特定文件系统事件(open.close.delet ...
- 用C#实现多种方式播放Wav声音
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- POJ-3693/HDU-2459 Maximum repetition substring 最多重复次数的子串(需要输出具体子串,按字典序)
http://acm.hdu.edu.cn/showproblem.php?pid=2459 之前hihocoder那题可以算出最多重复次数,但是没有输出子串.一开始以为只要基于那个,每次更新答案的时 ...
- 『TensorFlow』迁移学习
完全版见github:TransforLearning 零.迁移学习 将一个领域的已经成熟的知识应用到其他的场景中称为迁移学习.用神经网络的角度来表述,就是一层层网络中每个节点的权重从一个训练好的网络 ...