快速构建Windows 8风格应用32-构建辅助磁贴

简介:

引言

Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项“Pin To Start(固定到开始屏幕)”,大家都知道这种固定到开始屏幕的磁贴叫做辅助磁贴(也叫二级磁贴),用户可以通过该辅助磁贴启动应用程序并导航到应用程序中某一个页面或某一位置。

其实Windows 8 Store风格应用程序也引入了辅助磁贴的概念,用户在使用Windows 8 Store应用的辅助磁贴和Windows Phone 辅助磁贴的体验几乎一样,但是对于开发者来说实现方式完全不一样了。

 

一、辅助磁贴概览

 

1.由应用中某些元素的“固定(Pin)”操作生成

2.应用通过简单的运行时调用启动“固定” 操作

3.用户通过系统 UI 确认“固定”操作

4.展示应用的个性化界面

5.与应用磁贴具备相同功能

6.点击磁贴则启动应用并导航到相应内容页面

另外辅助磁贴常用场景包括:

1.天气应用中特定城市的天气更新

2.日历应用中有关近期活动的摘要

3.社交应用中重要联系人的状态和更新

4.RSS 阅读器中的特定源

5.音乐播放列表

6.博客

更多关于辅助磁贴介绍可参考:辅助磁贴概述(Windows 应用商店应用) (Windows)

二、辅助磁贴构建

上面对辅助磁贴进行了简单的介绍,那么我们开发者该如何在应用程序内添加构建辅助磁贴的功能呢?

1.添加Windows.UI.StartScreen 命名空间

2.添加样式资源(该步骤可根据自己实际情况是否执行)

通常我们会使用应用程序中提供StandardStyles.xaml 文件中的“固定”和“取消固定图标”样式资源。当然我们也可以自己定义相应的样式资源。

StandardStyles.xaml 文件提供的标准样式资源如下:


 
 
  1. <Page.Resources> 
  2.         <Style x:Key="PinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> 
  3.             <Setter Property="AutomationProperties.AutomationId" Value="PinAppBarButton"/> 
  4.             <Setter Property="AutomationProperties.Name" Value="Pin to Start"/> 
  5.             <Setter Property="Content" Value="&#xE141;"/> 
  6.         </Style> 
  7.         <Style x:Key="UnpinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> 
  8.             <Setter Property="AutomationProperties.AutomationId" Value="UnpinAppBarButton"/> 
  9.             <Setter Property="AutomationProperties.Name" Value="Unpin from Start"/> 
  10.             <Setter Property="Content" Value="&#xE196;"/> 
  11.         </Style> 
  12.     </Page.Resources> 

3.添加应用栏

通常我们会在应用栏中添加“固定到开始屏幕”按钮,用户通过该按钮进行辅助磁贴的创建。


 
 
  1. <Page.BottomAppBar> 
  2.         <AppBar x:Name="SecondaryTileAppBar" Padding="10,0,10,0" > 
  3.             <Grid> 
  4.                 <Grid.ColumnDefinitions> 
  5.                     <ColumnDefinition Width="30*"/> 
  6.                 </Grid.ColumnDefinitions> 
  7.                 <StackPanel x:Name="RightPanel" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right"> 
  8.                     <Button x:Name="PinButton" HorizontalAlignment="Left" Click="OnPinButtonClicked" /> 
  9.                 </StackPanel> 
  10.             </Grid> 
  11.         </AppBar> 
  12.     </Page.BottomAppBar> 

4.在页面的.cs文件中添加标识辅助磁贴的唯一ID变量


 
 
  1. public const string appbarTileId = "SecondaryTile.AppBar"

5.创建判断是否存在相关辅助磁贴的方法,若存在显示UnpinAppBarButtonStyle样式资源,若不存在显示PinAppBarButtonStyle样式资源。


 
 
  1. private void ToggleAppBarButton(bool showPinButton)  
  2.         {  
  3.             PinButton.Style = (showPinButton) ? (this.Resources["PinAppBarButtonStyle"as Style) : (this.Resources["UnpinAppBarButtonStyle"as Style);  
  4.         } 

6.创建“固定到开始”按钮点击事件


 
 
  1. private async void OnPinButtonClicked(object sender, RoutedEventArgs e)  
  2.       {  
  3.           //当用户选择应用栏上的按钮时,会显示一个要求用户进行确认的弹出窗口。  
  4.           //若要确保在显示弹出窗口时不取消应用栏,必须设置应用栏的 IsSticky 属性。  
  5.           this.BottomAppBar.IsSticky = true;  
  6.           if (SecondaryTile.Exists(appbarTileId))  
  7.           {  
  8.               //取消相应的辅助磁贴  
  9.               SecondaryTile secondaryTile = new SecondaryTile(appbarTileId);  
  10.               bool isUnpinned = await secondaryTile.RequestDeleteForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Above);  
  11.  
  12.               ToggleAppBarButton(isUnpinned);  
  13.           }  
  14.           else 
  15.           {  
  16.               //辅助磁贴的一些属性才能固定辅助磁贴.  
  17.               //•磁贴的唯一 ID  
  18.               //•短名称  
  19.               //•显示名称  
  20.               //•磁贴选项  
  21.               //•徽标图像  
  22.               //•激活辅助磁贴时将传递到父应用程序的参数字符串  
  23.               Uri logo = new Uri("ms-appx:///Assets/1.jpg");  
  24.               string tileActivationArguments = appbarTileId + " was pinned at " + DateTime.Now.ToLocalTime().ToString();  
  25.  
  26.               SecondaryTile secondaryTile = new SecondaryTile(appbarTileId,  
  27.                                                               "Secondary tile pinned via AppBar",  
  28.                                                               "SDK Sample Secondary Tile pinned from AppBar",  
  29.                                                               tileActivationArguments,  
  30.                                                               TileOptions.ShowNameOnLogo,  
  31.                                                               logo);  
  32.               //指定前景文本颜色和小徽标。  
  33.               secondaryTile.ForegroundText = ForegroundText.Dark;  
  34.               secondaryTile.SmallLogo = new Uri("ms-appx:///Assets/1.jpg");  
  35.               //调用异步方法将辅助磁贴固定。  
  36.               //实际上这种方法不是将磁贴直接固定到“开始”屏幕,而是会显示一个要求用户允许这样做的确认提示框。  
  37.               bool isPinned = await secondaryTile.RequestCreateForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Above);  
  38.  
  39.               ToggleAppBarButton(!isPinned);  
  40.           }  
  41.           this.BottomAppBar.IsSticky = false;  
  42.       } 

7.检索之前定义的pin按钮的边界矩形,因为在固定辅助磁贴前,用户必须确认,要求对此进行确认的弹出窗口应当显示在调用固定请求的按钮旁边。


 
 
  1. public Rect GetElementRect(FrameworkElement element)  
  2.        {  
  3.            GeneralTransform buttonTransform = element.TransformToVisual(null);  
  4.            Point point = buttonTransform.TransformPoint(new Point());  
  5.            return new Rect(point, new Size(element.ActualWidth, element.ActualHeight));  
  6.        } 

到此为止我们可以通过以上步骤实现一个辅助磁贴的构建了。

三、示例的运行效果

运行应用程序,弹出应用栏,点击“Pin To Start”按钮弹出窗口。

点击“固定到‘开始’屏幕”按钮之后,我们在开始屏幕上就可以看到相应创建的辅助磁贴。

当我们在回到应用程序,就看到应用栏按钮发生了变化。

点击“Unpin form Start”按钮之后,弹出“从‘开始’屏幕取消固定”的窗口,我们点击按钮之后就把相应的辅助磁贴取消了。

更多关于辅助磁贴开发资料可参考:

1.辅助磁贴概述(Windows 应用商店应用) (Windows)

2.快速入门:固定辅助磁贴(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows)

3.快速入门:如何向辅助磁贴发送通知(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows)

4.Secondary tiles sample







 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/1109787,如需转载请自行联系原作者


相关文章
|
15天前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
1月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
41 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
2月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
201 0
|
2月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
56 0
|
4月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
90 0
|
4月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
77 0
|
4月前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
130 0
|
C# 数据安全/隐私保护 Windows
快速构建Windows 8风格应用19-基础控件II
原文:快速构建Windows 8风格应用19-基础控件II 本篇博文接着上篇博文《快速构建Windows 8风格应用18-基础控件I》介绍开发Windows 8风格应用中常用控件。 Slider: Slider控件常见的效果图:   如何在XAML代码中声明Slider控件呢?代码如下:   Value属性值表示Slider控件显示的初始值,应用运行状态下我们也可以拖动改变Slider控件的值。
772 0