- 浏览: 84020 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
动手实验
实验6:设置和首选项
2012年9月
简介
实验3介绍了合约并演示了应用程序如何轻松地与共享和搜索合约实现集成。合约同样包含设置超级按钮,它对活动的Windows应用商店应用的设置进行修改。在您选择设置超级按钮时出现的设置窗格中,操作系统提供一个权限命令,它允许用户启用或禁用程序的某些功能,例如对网络摄像头和麦克风的访问。值得注意的是您可以向设置窗格添加命令并将它们连接到设置页面。这为用户提供了方便地访问首选项,关于框和其他应用程序特定的设置内容。
在本实验中,您将向Contoso食谱的设置窗格添加About 和 Preferences命令。您将公开一个简单的用户首选项,它可以通过一个切换开关被打开和关闭,并且您将使用漫游设置存储这个首选项以使它跟随用户一起移动。
目标
本实验将向您展示如何:
- 向设置窗格添加About命令和关于页面。
- 向设置窗格添加Preferences(首选项)命令和首选项页面。
- 使用漫游设置存储用户首选项。
系统要求
您需要下列软件完成本实验:
- Microsoft Windows 8
- Microsoft Visual Studio 2012
设置
您必须执行以下步骤来准备本实验的计算机:
- 安装Microsoft Windows 8。
- 安装Microsoft Visual Studio 2012。
练习
本动手实验包含以下练习:
- 添加关于页面
- 添加首选项页面
- 实现首选项
完成本实验的预计时间:30至40分钟。
练习1: 添加关于页面
在本练习中您将向Contoso食谱添加一个简单的关于页面。您将使用在实验4中添加的Callisto库中的SettingsFlyout类来处理关于页面。
任务1 – 添加关于命令
第一步是向设置菜单添加一个About命令,我们将通过处理SettingsPane.CommandsRequested事件来完成。
1、在Visual Studio中打开您在实验4中完成的ContosoCookbook项目。如果您尚未完成实验4或希望从一个参考副本开始,您可以在开始材料中找到实验已完成的版本。
2、打开App.xaml.cs并添加以下using语句。
C#
using Windows.UI.ApplicationSettings;
using Callisto.Controls;
using Windows.UI;
3、向App类添加以下字段。
C#
private Color _background = Color.FromArgb(255, 0, 77, 96);
4、在OnLaunched方法中,紧挨着为SuggestionsRequested事件注册事件处理程序的语句之后,添加以下语句。
C#
// 在设置窗格为CommandsRequested 事件注册事件处理程序
SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
5、向OnSearchActivated方法添加相同的语句(再次紧挨着为SuggestionsRequested事件注册事件处理程序的语句之后),以保证即使应用程序从Windows 8搜索窗格被激活,CommandsRequested事件也会被处理。
6、向App.xaml.cs添加以下事件处理程序。
C#
void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
// 添加关于命令
var about = new SettingsCommand("about", "About", (handler) =>
{
var settings = new SettingsFlyout();
settings.Content = new AboutUserControl();
settings.HeaderBrush = new SolidColorBrush(_background);
settings.Background = new SolidColorBrush(_background);
settings.HeaderText = "About";
settings.IsOpen = true;
});
args.Request.ApplicationCommands.Add(about);
}
注意:这里您通过向传递给CommandsRequested事件的ApplicationCommands集合添加一个SettingsCommand对象以向设置菜单添加命令。SettingsCommand构造函数的第三个参数是命令被调用时被调用的处理程序。在本示例中,您使用Callisto中的SettingsFlyout类从处理程序显示关于页面。当然关于页面还没有被创建。您将在下一个任务中创建它。
任务 2 – 添加关于页面
在上一个任务中添加的事件处理程序向设置窗格添加了一个About命令。下一个步骤是为显示About命令添加一个关于页面。为创建该页面,我们需要在项目中添加一个新的用户控件。
1、在解决方案管理器中右键单击项目并使用Add - New Item命令在项目中添加一个用户控件。将文件命名为AboutUserControl.xaml,如图1所示。
图1 添加一个代表关于页面的用户控件
2、在AboutUserControl.xaml中向空的Grid添加以下语句。
XAML
<StackPanel>
<TextBlock Text="Contoso Cookbook" FontFamily="Segoe UI" FontWeight="SemiLight" FontSize="26.667" />
<TextBlock Text="Trial Version" FontFamily="Segoe UI" FontWeight="SemiLight" FontSize="18" />
</StackPanel>
注意:现在关于页面通知用户这是Contoso食谱的试用版本。在实验8中您将使用Windows运行时中的应用商店API模拟应用程序的购买,当购买发生后您将用许可信息替换“试用版本”。
任务 3 – 测试结果
现在让我们测试您的修改并查看关于页面的外观。
1、按F5运行应用程序。
2、显示超级按钮并选择设置。
3、从设置窗格选择About命令。
4、确认出现开始页面,如图2所示。
图 2 Contoso 食谱的关于页面
5、返回Visual Studio并停止调试。
练习 2: 添加首选项页面
现在您已经理解向设置窗格添加页面的机制,这次您将添加另一个页面:首选项页面。它允许用户输入并编辑首选项。我们只添加一个首选项来演示实现的方法,当然您可以添加任意数量的首选项。您添加的首选项将允许用户配置Contoso食谱启动时返回最后一次显示的食谱或食谱组。
任务 1 – 添加首选项命令
修改您在之前练习中编写的CommandsRequested事件处理程序并添加Preferences命令。
1、打开App.xaml.cs并找到OnCommandsRequested方法。
2、在添加About命令的语句后向OnCommandsRequested添加以下语句。
C#
// 添加一个首选项命令
var preferences = new SettingsCommand("preferences", "Preferences", (handler) =>
{
var settings = new SettingsFlyout();
settings.Content = new PreferencesUserControl();
settings.HeaderBrush = new SolidColorBrush(_background);
settings.Background = new SolidColorBrush(_background);
settings.HeaderText = "Preferences";
settings.IsOpen = true;
});
args.Request.ApplicationCommands.Add(preferences);
任务2 – 添加首选项页面
下一个任务是创建Preferences命令调用的页面。
1、在解决方案管理器中右键单击项目并使用Add > New Item命令在项目中添加一个新的用户控件。将文件命名为PreferencesUserControl.xaml。
2、在PreferencesUserControl.xaml中向空的Grid元素添加以下语句。
XAML
<ToggleSwitch x:Name="Remember" Header="Remember where I was" />
3、按F5运行应用程序。
4、显示超级按钮并选择设置超级按钮。
5、从设置窗格选择Preferences命令。
6、确认出现首选项页面并且包含一个切换开关,如图3所示。
图3 Contoso食谱的首选项页面
7、返回Visual Studio并停止调试。
任务3 – 记住首选项的状态
目前,首选项页面中的“Remember where I was(记住我的位置)”切换开关未与任何事物关联,并且不能记住状态。让我们通过在切换开关每次被点击时使用漫游设置保存它的状态,同时在首选项页面每次显示时对它进行初始化来修复此问题。
1、打开PreferencesUserControl.xaml并向ToggleSwitch控件添加Toggled属性。
XAML
<ToggleSwitch x:Name="Remember" Header="Remember where I was" Toggled="OnToggled" />
2、打开PreferencesUserControl.xaml.cs并添加以下using语句。
C#
using Windows.Storage;
3、然后添加以下方法。
C#
private void OnToggled(object sender, RoutedEventArgs e)
{
ApplicationData.Current.RoamingSettings.Values["Remember"] = Remember.IsOn;
}
4、向PreferencesUserControl的构造函数(对InitializeComponent的调用之后)添加以下语句以在每次首选项页面显示时初始化切换开关。
C#
// 从漫游设置初始化切换开关
if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
Remember.IsOn = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];
注意:为处理保存和恢复设置和其他应用程序数据的任务,Windows运行时为您提供了Windows.Storage.ApplicationData类。ApplicationData允许您在本地、云(漫游存储)或临时存储存储数据。您保存的数据通过名称为LocalSettings 和RoamingSettings 的ApplicationData属性以名称-值对的形式存储。或者它可以存储在特殊的应用程序特定的文件夹中,这些文件夹可以通过ApplicationData的LocalFolder,RoamingFolder和TemporaryFolder属性来访问。
在漫游存储库中保留数据的优势是数据将跟随用户从一个设备转到另一个设备。此外,如果应用程序将数据写入RoamingSettings或RoamingFolder并且用户未以Microsoft账户登录或没有Internet连接,Windows运行时将自动在本地保留数据。因此将RoamingSettings或RoamingFolder作为用户首选项的存储可以带来很多方便。唯一需要提醒的是该平台对漫游存储中可以保存的数据大小进行了限制。在Windows 8预发布版中,您可以漫游大约100K字节的数据。在运行时,您可以从ApplicationData.RoamingStorageQuota属性获取配额的数量。
5、按F5运行应用程序。
6、显示超级按钮并选择设置超级按钮。
7、从设置窗格选择Preferences命令。
8、点击Remember where I was以启用切换开关。
9、取消设置窗格。
10、返回Visual Studio并停止调试。
11、按F5以再次启动应用程序。
12、转至首选项页面并确认切换开关被启用。
13、返回Visual Studio并停止调试。
练习3: 实现首选项
目前Contoso食谱每次启动时显示开始页面。在之前练习中添加名称为“Remember where I was”的用户首选项的目的是允许用户配置应用程序如何返回,即每次启动时转至上一次关闭时显示的页面。该用户首选项仅仅需要对代码进行细微的修改,因为Visual Studio已经在应用程序中包含当应用程序被挂起时保存导航状态的代码。
注意:进程生命周期管理是Windows应用商店应用的重要元素。当应用程序被挂起时,它可以在任何时候被操作系统终止。并且当应用程序被终止后,它的状态也将丢失。
用户不会因为暂时切换应用程序而去关心应用程序会丢失状态。这就是为什么Windows.UI.Xaml.Application类定义Suspending事件的原因。在应用被挂起前Suspending事件被触发。它为应用程序提供了保存状态的机会,以防止应用程序被操作系统终止并在之后被用户重新激活。触发事件的目的是当用户重新激活应用程序时能够恢复状态,以产生应用程序根本没有被终止的错觉。
Visual Studio在应用程序中包含一个名称为SuspensionManager的类。它位于项目Common文件夹的SuspensionManager.cs中。Visual Studio同时在App.xaml.cs的App构造函数中包含一行代码,它为Suspending事件注册了一个处理程序。该处理程序(OnSuspending)调用SuspensionManager.SaveAsync以保存应用程序的导航状态。导航状态包含用户查看的项或组,以及用户到达上述项或组的路径。
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
此外Visual Studio在App.xaml.cs的OnLaunched方法中包含一个if子句,它负责当应用程序被挂起后又被操作系统终止时恢复应用程序的导航状态:
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
// Restore the saved session state only when appropriate
await SuspensionManager.RestoreAsync();
}
所有这些工作的结果是您可以免费获得很多东西。如果Contoso食谱被挂起并终止,当重新启动时,它将自动转至您查看的最后页面。您可以通过在Visual Studio中按F5启动应用程序,选择某个食谱,并选择从Debug Location工具栏选择Suspend and shutdown以对它进行测试。
通过这种方式关闭应用程序后,按F5重新启动应用程序。上述步骤对应用程序被操作系统终止并被重新启动的过程进行了模拟。得益于Visual Studio的帮助,应用程序将返回至您关闭应用时查看的食谱。因为最近的应用程序历史也同时被恢复,您甚至可以使用后退按钮回溯在应用程序中的浏览步骤。
任务 1 –修改OnLaunched方法
Visual Studio已经包含当应用程序被挂起时保存导航状态以及如果被终止恢复状态的代码。我们将使用类似的策略以在应用程序被用户关闭后再次被启动且Remember where I was被启用时恢复导航状态。
1、打开App.xaml.cs并在靠近顶部处添加以下using语句。
C#
using Windows.Storage;
2、找到OnLaunched方法。紧靠await RecipeDataSource.LoadLocalDataAsync()语句后,添加以下语句。
C#
// If the app was closed by the user the last time it ran, and if "Remember
// "where I was" is enabled, restore the navigation state
if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
{
bool remember = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];
if (remember)
await SuspensionManager.RestoreAsync();
}
}
注意:当应用程序被用户关闭时,我们不需要编写任何保存导航状态的代码,因为Suspending事件将在关闭应用程序几秒钟后触发。事实上并没有指示应用程序被用户关闭的事件。当您希望在应用程序关闭前保存状态,Suspending事件处理程序是完成上述工作的恰当位置。
任务 2 –测试结果
所有剩下的工作是进行一些测试以确认这些修改能够正常工作。
1、按F5运行应用程序。
2、显示超级按钮并选择设置超级按钮。
3、从设置窗格选择Preferences命令。
4、验证Remember where I was被启用。如果未被启用,则启用它。
5、取消设置窗格。
6、转至食谱页面。
7、通过从屏幕顶部向下轻扫或按Alt+F4以关闭应用程序。(不要使用Visual Studio中的Stop Debugging命令关闭应用程序)
8、返回Visual Studio并等待几秒钟以使进程结束。(通常需要花10秒钟。)
9、按F5再次运行应用程序。
10、确认Contoso食谱返回当您关闭应用程序时显示的食谱。
11、转至首选项页面并关闭Remember where I was。
12、当查看食谱页面时,通过从屏幕顶部向下轻扫或按Alt+F4以再次关闭应用程序。
13、返回Visual Studio并等待进程结束。
14、按F5再次运行应用程序。
15、确认您转至应用程序的开始页面而不是您最后查看的食谱页面。
16、返回Visual Studio并停止调试。
总结
设置和首选项是几乎每个Windows应用商店应用的重要组成部分。设置超级按钮为查看和编辑应用程序设置提供了一个熟悉和一致的模型,并且正如您在本实验中看到的那样,通过设置窗格公开应用程序的内容十分简单。Callisto库为通过SettingsFlyout控件呈现设置页面提供了方便,并且页面本身可以很方便地通过用户控件实现。
从实验1到现在,我们已经走过了很长一段路,但是还有更多的工作需要完成。接下来是成为明星Windows应用商店应用的另一个重要步骤:磁贴和通知。
实验6:设置和首选项
2012年9月
简介
实验3介绍了合约并演示了应用程序如何轻松地与共享和搜索合约实现集成。合约同样包含设置超级按钮,它对活动的Windows应用商店应用的设置进行修改。在您选择设置超级按钮时出现的设置窗格中,操作系统提供一个权限命令,它允许用户启用或禁用程序的某些功能,例如对网络摄像头和麦克风的访问。值得注意的是您可以向设置窗格添加命令并将它们连接到设置页面。这为用户提供了方便地访问首选项,关于框和其他应用程序特定的设置内容。
在本实验中,您将向Contoso食谱的设置窗格添加About 和 Preferences命令。您将公开一个简单的用户首选项,它可以通过一个切换开关被打开和关闭,并且您将使用漫游设置存储这个首选项以使它跟随用户一起移动。
目标
本实验将向您展示如何:
- 向设置窗格添加About命令和关于页面。
- 向设置窗格添加Preferences(首选项)命令和首选项页面。
- 使用漫游设置存储用户首选项。
系统要求
您需要下列软件完成本实验:
- Microsoft Windows 8
- Microsoft Visual Studio 2012
设置
您必须执行以下步骤来准备本实验的计算机:
- 安装Microsoft Windows 8。
- 安装Microsoft Visual Studio 2012。
练习
本动手实验包含以下练习:
- 添加关于页面
- 添加首选项页面
- 实现首选项
完成本实验的预计时间:30至40分钟。
练习1: 添加关于页面
在本练习中您将向Contoso食谱添加一个简单的关于页面。您将使用在实验4中添加的Callisto库中的SettingsFlyout类来处理关于页面。
任务1 – 添加关于命令
第一步是向设置菜单添加一个About命令,我们将通过处理SettingsPane.CommandsRequested事件来完成。
1、在Visual Studio中打开您在实验4中完成的ContosoCookbook项目。如果您尚未完成实验4或希望从一个参考副本开始,您可以在开始材料中找到实验已完成的版本。
2、打开App.xaml.cs并添加以下using语句。
C#
using Callisto.Controls;
using Windows.UI;
3、向App类添加以下字段。
C#
4、在OnLaunched方法中,紧挨着为SuggestionsRequested事件注册事件处理程序的语句之后,添加以下语句。
C#
SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
5、向OnSearchActivated方法添加相同的语句(再次紧挨着为SuggestionsRequested事件注册事件处理程序的语句之后),以保证即使应用程序从Windows 8搜索窗格被激活,CommandsRequested事件也会被处理。
6、向App.xaml.cs添加以下事件处理程序。
C#
{
// 添加关于命令
var about = new SettingsCommand("about", "About", (handler) =>
{
var settings = new SettingsFlyout();
settings.Content = new AboutUserControl();
settings.HeaderBrush = new SolidColorBrush(_background);
settings.Background = new SolidColorBrush(_background);
settings.HeaderText = "About";
settings.IsOpen = true;
});
args.Request.ApplicationCommands.Add(about);
}
注意:这里您通过向传递给CommandsRequested事件的ApplicationCommands集合添加一个SettingsCommand对象以向设置菜单添加命令。SettingsCommand构造函数的第三个参数是命令被调用时被调用的处理程序。在本示例中,您使用Callisto中的SettingsFlyout类从处理程序显示关于页面。当然关于页面还没有被创建。您将在下一个任务中创建它。
任务 2 – 添加关于页面
在上一个任务中添加的事件处理程序向设置窗格添加了一个About命令。下一个步骤是为显示About命令添加一个关于页面。为创建该页面,我们需要在项目中添加一个新的用户控件。
1、在解决方案管理器中右键单击项目并使用Add - New Item命令在项目中添加一个用户控件。将文件命名为AboutUserControl.xaml,如图1所示。
图1 添加一个代表关于页面的用户控件
2、在AboutUserControl.xaml中向空的Grid添加以下语句。
XAML
<TextBlock Text="Contoso Cookbook" FontFamily="Segoe UI" FontWeight="SemiLight" FontSize="26.667" />
<TextBlock Text="Trial Version" FontFamily="Segoe UI" FontWeight="SemiLight" FontSize="18" />
</StackPanel>
注意:现在关于页面通知用户这是Contoso食谱的试用版本。在实验8中您将使用Windows运行时中的应用商店API模拟应用程序的购买,当购买发生后您将用许可信息替换“试用版本”。
任务 3 – 测试结果
现在让我们测试您的修改并查看关于页面的外观。
1、按F5运行应用程序。
2、显示超级按钮并选择设置。
3、从设置窗格选择About命令。
4、确认出现开始页面,如图2所示。
图 2 Contoso 食谱的关于页面
5、返回Visual Studio并停止调试。
练习 2: 添加首选项页面
现在您已经理解向设置窗格添加页面的机制,这次您将添加另一个页面:首选项页面。它允许用户输入并编辑首选项。我们只添加一个首选项来演示实现的方法,当然您可以添加任意数量的首选项。您添加的首选项将允许用户配置Contoso食谱启动时返回最后一次显示的食谱或食谱组。
任务 1 – 添加首选项命令
修改您在之前练习中编写的CommandsRequested事件处理程序并添加Preferences命令。
1、打开App.xaml.cs并找到OnCommandsRequested方法。
2、在添加About命令的语句后向OnCommandsRequested添加以下语句。
C#
var preferences = new SettingsCommand("preferences", "Preferences", (handler) =>
{
var settings = new SettingsFlyout();
settings.Content = new PreferencesUserControl();
settings.HeaderBrush = new SolidColorBrush(_background);
settings.Background = new SolidColorBrush(_background);
settings.HeaderText = "Preferences";
settings.IsOpen = true;
});
args.Request.ApplicationCommands.Add(preferences);
任务2 – 添加首选项页面
下一个任务是创建Preferences命令调用的页面。
1、在解决方案管理器中右键单击项目并使用Add > New Item命令在项目中添加一个新的用户控件。将文件命名为PreferencesUserControl.xaml。
2、在PreferencesUserControl.xaml中向空的Grid元素添加以下语句。
XAML
3、按F5运行应用程序。
4、显示超级按钮并选择设置超级按钮。
5、从设置窗格选择Preferences命令。
6、确认出现首选项页面并且包含一个切换开关,如图3所示。
图3 Contoso食谱的首选项页面
7、返回Visual Studio并停止调试。
任务3 – 记住首选项的状态
目前,首选项页面中的“Remember where I was(记住我的位置)”切换开关未与任何事物关联,并且不能记住状态。让我们通过在切换开关每次被点击时使用漫游设置保存它的状态,同时在首选项页面每次显示时对它进行初始化来修复此问题。
1、打开PreferencesUserControl.xaml并向ToggleSwitch控件添加Toggled属性。
XAML
2、打开PreferencesUserControl.xaml.cs并添加以下using语句。
C#
3、然后添加以下方法。
C#
{
ApplicationData.Current.RoamingSettings.Values["Remember"] = Remember.IsOn;
}
4、向PreferencesUserControl的构造函数(对InitializeComponent的调用之后)添加以下语句以在每次首选项页面显示时初始化切换开关。
C#
if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
Remember.IsOn = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];
注意:为处理保存和恢复设置和其他应用程序数据的任务,Windows运行时为您提供了Windows.Storage.ApplicationData类。ApplicationData允许您在本地、云(漫游存储)或临时存储存储数据。您保存的数据通过名称为LocalSettings 和RoamingSettings 的ApplicationData属性以名称-值对的形式存储。或者它可以存储在特殊的应用程序特定的文件夹中,这些文件夹可以通过ApplicationData的LocalFolder,RoamingFolder和TemporaryFolder属性来访问。
在漫游存储库中保留数据的优势是数据将跟随用户从一个设备转到另一个设备。此外,如果应用程序将数据写入RoamingSettings或RoamingFolder并且用户未以Microsoft账户登录或没有Internet连接,Windows运行时将自动在本地保留数据。因此将RoamingSettings或RoamingFolder作为用户首选项的存储可以带来很多方便。唯一需要提醒的是该平台对漫游存储中可以保存的数据大小进行了限制。在Windows 8预发布版中,您可以漫游大约100K字节的数据。在运行时,您可以从ApplicationData.RoamingStorageQuota属性获取配额的数量。
5、按F5运行应用程序。
6、显示超级按钮并选择设置超级按钮。
7、从设置窗格选择Preferences命令。
8、点击Remember where I was以启用切换开关。
9、取消设置窗格。
10、返回Visual Studio并停止调试。
11、按F5以再次启动应用程序。
12、转至首选项页面并确认切换开关被启用。
13、返回Visual Studio并停止调试。
练习3: 实现首选项
目前Contoso食谱每次启动时显示开始页面。在之前练习中添加名称为“Remember where I was”的用户首选项的目的是允许用户配置应用程序如何返回,即每次启动时转至上一次关闭时显示的页面。该用户首选项仅仅需要对代码进行细微的修改,因为Visual Studio已经在应用程序中包含当应用程序被挂起时保存导航状态的代码。
注意:进程生命周期管理是Windows应用商店应用的重要元素。当应用程序被挂起时,它可以在任何时候被操作系统终止。并且当应用程序被终止后,它的状态也将丢失。
用户不会因为暂时切换应用程序而去关心应用程序会丢失状态。这就是为什么Windows.UI.Xaml.Application类定义Suspending事件的原因。在应用被挂起前Suspending事件被触发。它为应用程序提供了保存状态的机会,以防止应用程序被操作系统终止并在之后被用户重新激活。触发事件的目的是当用户重新激活应用程序时能够恢复状态,以产生应用程序根本没有被终止的错觉。
Visual Studio在应用程序中包含一个名称为SuspensionManager的类。它位于项目Common文件夹的SuspensionManager.cs中。Visual Studio同时在App.xaml.cs的App构造函数中包含一行代码,它为Suspending事件注册了一个处理程序。该处理程序(OnSuspending)调用SuspensionManager.SaveAsync以保存应用程序的导航状态。导航状态包含用户查看的项或组,以及用户到达上述项或组的路径。
{
var deferral = e.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
此外Visual Studio在App.xaml.cs的OnLaunched方法中包含一个if子句,它负责当应用程序被挂起后又被操作系统终止时恢复应用程序的导航状态:
{
// Restore the saved session state only when appropriate
await SuspensionManager.RestoreAsync();
}
所有这些工作的结果是您可以免费获得很多东西。如果Contoso食谱被挂起并终止,当重新启动时,它将自动转至您查看的最后页面。您可以通过在Visual Studio中按F5启动应用程序,选择某个食谱,并选择从Debug Location工具栏选择Suspend and shutdown以对它进行测试。
通过这种方式关闭应用程序后,按F5重新启动应用程序。上述步骤对应用程序被操作系统终止并被重新启动的过程进行了模拟。得益于Visual Studio的帮助,应用程序将返回至您关闭应用时查看的食谱。因为最近的应用程序历史也同时被恢复,您甚至可以使用后退按钮回溯在应用程序中的浏览步骤。
任务 1 –修改OnLaunched方法
Visual Studio已经包含当应用程序被挂起时保存导航状态以及如果被终止恢复状态的代码。我们将使用类似的策略以在应用程序被用户关闭后再次被启动且Remember where I was被启用时恢复导航状态。
1、打开App.xaml.cs并在靠近顶部处添加以下using语句。
C#
2、找到OnLaunched方法。紧靠await RecipeDataSource.LoadLocalDataAsync()语句后,添加以下语句。
C#
// "where I was" is enabled, restore the navigation state
if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
{
bool remember = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];
if (remember)
await SuspensionManager.RestoreAsync();
}
}
注意:当应用程序被用户关闭时,我们不需要编写任何保存导航状态的代码,因为Suspending事件将在关闭应用程序几秒钟后触发。事实上并没有指示应用程序被用户关闭的事件。当您希望在应用程序关闭前保存状态,Suspending事件处理程序是完成上述工作的恰当位置。
任务 2 –测试结果
所有剩下的工作是进行一些测试以确认这些修改能够正常工作。
1、按F5运行应用程序。
2、显示超级按钮并选择设置超级按钮。
3、从设置窗格选择Preferences命令。
4、验证Remember where I was被启用。如果未被启用,则启用它。
5、取消设置窗格。
6、转至食谱页面。
7、通过从屏幕顶部向下轻扫或按Alt+F4以关闭应用程序。(不要使用Visual Studio中的Stop Debugging命令关闭应用程序)
8、返回Visual Studio并等待几秒钟以使进程结束。(通常需要花10秒钟。)
9、按F5再次运行应用程序。
10、确认Contoso食谱返回当您关闭应用程序时显示的食谱。
11、转至首选项页面并关闭Remember where I was。
12、当查看食谱页面时,通过从屏幕顶部向下轻扫或按Alt+F4以再次关闭应用程序。
13、返回Visual Studio并等待进程结束。
14、按F5再次运行应用程序。
15、确认您转至应用程序的开始页面而不是您最后查看的食谱页面。
16、返回Visual Studio并停止调试。
总结
设置和首选项是几乎每个Windows应用商店应用的重要组成部分。设置超级按钮为查看和编辑应用程序设置提供了一个熟悉和一致的模型,并且正如您在本实验中看到的那样,通过设置窗格公开应用程序的内容十分简单。Callisto库为通过SettingsFlyout控件呈现设置页面提供了方便,并且页面本身可以很方便地通过用户控件实现。
从实验1到现在,我们已经走过了很长一段路,但是还有更多的工作需要完成。接下来是成为明星Windows应用商店应用的另一个重要步骤:磁贴和通知。
本文链接:http://www.cnblogs.com/zigzagPath/p/3154159.html,转载请注明。
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1070原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1131原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 622原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 473原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 597原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 558原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 559原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 525原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 495原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 800原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 786原帖地址:http://www.cnblogs.com/yex ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 566原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 610原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 838原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 954原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 411原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 674原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 670原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 503原帖地址:http://www.cnblogs.com/had ... -
1、图解Oracle Logminer配置使用
2013-06-18 10:37 1610原帖地址:http://www.cnblogs.com/shi ...
相关推荐
### 嵌入式Linux基础教程相关知识点 #### 书籍基本信息 - **书名**:《嵌入式Linux基础教程》(英文版)—— *Embedded Linux Primer: A Practical Real-World Approach* - **作者**:Christopher Hallinan - **...
### Kettle初级教程知识点解析 #### 概述 Kettle是一款开源的数据集成工具,由Pentaho公司维护和支持。它提供了强大的数据清洗、转换及加载(ETL)功能,广泛应用于数据仓库建设和日常数据处理任务中。本教程旨在...
《Windows内核实验教程》是一本深入探讨操作系统内核机制的教材,特别关注了在Windows环境中如何进行实际操作和设计代码。"读者写者问题"是计算机科学中经典的多线程同步问题,这本书中可能涉及了如何在Windows内核...
计算机组成原理是计算机科学与...通过这个TEC-8实验系统仿真软件和视频,学习者不仅可以理论联系实际,提高动手能力,还能增强对计算机硬件系统复杂性的理解,为未来深入学习计算机体系结构和嵌入式系统打下坚实基础。
在本篇内容中,我们将基于提供的“Ffmpeg视频教程”这一主题展开深入探讨,旨在为初学者提供一套全面、系统的Ffmpeg学习路径。Ffmpeg是一款强大的跨平台音视频处理工具集,广泛应用于音视频转码、流媒体采集、播放、...
已编译好的nginx-http-flv-molule(windows...在网上查找半天都只有教程,没有可免费下载的版本,深知没有积分遍地找资源的痛苦,无奈之下只好自己按照教程一步一个坑编译出来的,供大家免费下载使用。(无毒放心使用)
- 进行地图渲染技术的学习和实验。 2. **实验内容:** - 实验的具体内容未详细给出,但通常包括地图的样式设置、渲染效果展示等。 3. **实验步骤与结果:** - 功能流程图:未详细描述。 - 所用接口的作用:...
步骤1:搜索无线接入点信号,在Windows下可以使用的无线信号搜索工具有NetStumbler、WirelessMon、OmniPeek、Commview for WiFi等等,下图为使用Commview for WiFi进行无线扫描,可以看到,扫描到SSID为AR7WRD的无线...
- **颜色设置**:为元素设置前景色和背景色。 - **背景图片**:使用图片作为背景。 **第十五章:元素定位** - **绝对定位与相对定位**:精确控制元素位置。 - **可视性控制**:隐藏或显示元素。 #### 第三部分:...
实验一: 熟悉常用的Linux操作和Hadoop操作 实验二: 熟悉常用的HDFS操作 实验三: 熟悉常用的HBase操作 实验四: 熟悉常用的mongoDB数据库操作 实验五: MapReduce初级编程实践 实验六: 熟悉Hive的基本操作 实验七...
### ATP-EMTP中文教程知识点解析 #### 一、ATP-EMTP简介 ATP-EMTP(Alternative Transients Program - Electromagnetic Transients Program)是一款广泛应用于电力系统仿真领域的专业软件。它主要用于模拟电力系统...
### 信息隐藏技术实验教程知识点概述 #### 一、信息隐藏技术概览 - **定义**: 信息隐藏技术是指将保密信息嵌入到一个看似普通的文件(如图像、音频等)中的过程,使得该保密信息不易被察觉。这种方式主要用于保护...
通过这个实验教程,你不仅可以理论联系实际,增强动手能力,还能提升对网络安全的理解,为未来的工作或认证考试打下坚实基础。记得在实践中不断探索和积累经验,网络安全的学习是一个持续进步的过程。
这份教程旨在通过实际操作和实验,帮助学生深入理解电子技术的基本原理,提高动手能力和问题解决能力。实验报告模板的提供使得学生能够规范地记录实验过程与结果,有助于培养良好的科研习惯和严谨的科学态度。 电子...
**Airodump-ng for Windows 使用方法详解** Airodump-ng 是 Aircrack-ng 无线攻击套件中的一个重要组件,主要用于在网络攻击中探测无线接入点(AP)的加密类型、MAC 地址和SSID等信息。虽然它在 Linux 平台上更为...
10. 实验与练习:教程中可能包含一系列实验和练习,以帮助读者巩固所学知识,提升动手能力。 通过学习《汤国安-ARCGIS空间分析实验教程》,读者可以系统地掌握ARCGIS软件的使用,并具备独立进行空间分析项目的能力...
**Exercise8: Printing, Printing** - **章节概述**:深入讨论了不同类型的打印操作。 - **关键知识点**: - 使用不同的参数进行打印 - 打印控制符的使用 ##### 11. **Exercise9: Printing, Printing, ...
几乎是目前为止最详尽的PowerPC嵌入式系统实验教程。内容详实丰富,实为不可多得的PowerPC嵌入式系统式统学习资料。 主要内容 第一章介绍了Power PC硬件设计及特点,重点介绍了Power MPC8349开发板硬件资源、板级...