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 ...
随机推荐
- Eclipse搭建maven项目的流程,聚合所有的子模块项目
Eclipse搭建maven项目的流程 2018年03月01日 15:47:03 阅读数:22 1:搭建parent工程,用来聚合所有的子模块项目 2:搭建公共使用的模块common 这里你要点击空白 ...
- DRF中的APIView、GenericAPIView、ViewSet
1.APIView(rest_framework.views import APIView),是REST framework提供的所有视图的基类,继承自Django的View. 传入到视图方法中的是R ...
- Integer与int区别
Integer与int的区别:估计大多数人只会说道两点,一开始我也不太清楚,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i ...
- Unity --- 如何降低UI的填充率
1.首先简单介绍一下什么叫填充率: Fill Rate(填充率)是指显卡每帧或者说每秒能够渲染的像素数.在每帧绘制中,如果一个像素被反复绘制的次数越多,那么它占用的资源也必然更多.目前在移动设备上,F ...
- 第 3 章 镜像 - 016 - Dockerfile 常用指令
Dockerfile 常用指令 1.FROM 指定base镜像2.MAINTAINER 设置镜像的作者,可以为任意字符串3.COPY 从build context 复制到镜像 COPY 支持两种形式: ...
- [Spring] Annotation注释
自动扫描: 在<beans>标签内, <context:annotation-config />允许使用注解 <context:component-scan base-p ...
- C语言流控制命令的总结
C语言流控制命令的总结 基本概念: C语言中,自顶向下的的代码的流程叫做程序流. 能够改变程序流顺序的语句叫做流控制命令. 我为什么要写这篇文章 在学习C语言的过程中,经常会用到条件语句和循环语句这些 ...
- 基于C# winform实现图片流存储到文件
本文所述实例实现将一张图片上传到指定的文件夹,然后在窗体上的PictrueBox控件中显示出来. 具体功能代码如下: private void btnUpload_Click(object sende ...
- adobe
使用adobe acrobat pro dc可以处理pdf,自动识别,编辑pdf,将pdf导出为word.(收费可破解)
- git部署
1. 自动部署原理 先讲实现方法和原理.Git服务和仓库都是在服务器上的,服务器上的Web目录和本地都有完整的代码.Git有个叫hook的机制,可以在代码更新时执行回调(执行一段shell).一般执行 ...