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 ...
随机推荐
- VC.遍历文件夹中的文件
1.VC下遍历文件夹中的所有文件的几种方法 - 年少要轻狂 - CSDN博客.html(https://blog.csdn.net/wllmsdn/article/details/27220999) ...
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Servi ...
- WebSocket前后台交互
其实对于前后台交互有很多种方法(只列举我知道的,嘻嘻): 1:from 表单: 使用场景——小信息量提交给后台 2:ajax(跨域的话用jsonp): 可以进行多量的前后台信心传递: 但实时性不高,不 ...
- HTML5-用canvas画布rotate字体旋转(中国象棋棋谱)。
一开始我们老师安排我做这个作业,在这个作业我遇到了一个很重大的问题就是,文字旋转这么旋转,我查了很多资料. 1发现绘画正方形,使他正方形中心原点旋转非常容易理解.(我相信这个很多人看一下都会懂,) 1 ...
- 在python中使用正则表达式(二)
这一节主要学习一下compile()函数和group()方法 1. re.compile() compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,然后就可以用编译后 ...
- 算法:最短路径之弗洛伊德(Floyd)算法
https://cloud.tencent.com/developer/article/1012420 为了能讲明白弗洛伊德(Floyd)算法的主要思想,我们先来看最简单的案例.图7-7-12的左图是 ...
- type convert
背景# 在开发中,我们会碰到诸如String类型转换为Int等等问题,虽然处理起来简单,但是本着DRY(Don't Repeat Yourself )原则,还是有必要封装处理下: 具体代码:Maste ...
- c++-pimer-plus-6th-chapter03
Chapter Review Having more than one integer type lets you choose the type that is best suited to a p ...
- LeetCode--387--字符串中的第一个唯一字符
问题描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "lovel ...
- Vue音乐项目笔记(一)
看到一位小可爱的手记,这里记录一下自己需要注意的地方的链接 1.手写轮播图(上) https://blog.csdn.net/weixin_40814356/article/details/80298 ...