与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密
2014-02-22 22:17
519 查看
原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密[索引页]
[源码下载]
[align=center]与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密[/align]
作者:webabcd
介绍
与众不同 windows phone 7.5 (sdk 7.1) 之特性
手机方向
本地化
应用程序的试用体验
系统主题资源
本地数据的加密解密
示例
1、演示如何响应手机的方向变化
Orientation.xaml
Orientation.xaml.cs
2、演示如何实现程序的本地化
Localization.xaml
Localization.xaml.cs
3、演示如何提供支持试用体验的应用程序
TrialExperience.xaml
TrialExperience.xaml.cs
4、演示如何使用系统主题资源
ThemeResources.xaml
5、演示如何实现本地数据的加密解密
EncryptData.xaml
EncryptData.xaml.cs
OK
[源码下载]
[源码下载]
[align=center]与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密[/align]
作者:webabcd
介绍
与众不同 windows phone 7.5 (sdk 7.1) 之特性
手机方向
本地化
应用程序的试用体验
系统主题资源
本地数据的加密解密
示例
1、演示如何响应手机的方向变化
Orientation.xaml
<phone:PhoneApplicationPage x:Class="Demo.Feature.Orientation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <TextBlock Text="改变手机方向,以查看演示效果" /> </Grid> </phone:PhoneApplicationPage>
Orientation.xaml.cs
/* * 演示如何捕获手机方向改变的事件 * * PhoneApplicationPage - 页面 * SupportedOrientations - 支持的方向(Microsoft.Phone.Controls.SupportedPageOrientation 枚举) * Portrait(竖), Landscape(横), PortraitOrLandscape(横竖) * Orientation - 当前的方向(Microsoft.Phone.Controls.PageOrientation 枚举) * None, Portrait, Landscape, PortraitUp, PortraitDown(目前不支持), LandscapeLeft(PortraitUp 逆时针转到 Landscape), LandscapeRight(PortraitUp 顺时针转到 Landscape) * OrientationChanged - 方向改变后触发的事件(事件参数:OrientationChangedEventArgs) * * OrientationChangedEventArgs * Orientation - 当前的页面方向 */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace Demo.Feature { public partial class Orientation : PhoneApplicationPage { public Orientation() { InitializeComponent(); this.SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape; this.OrientationChanged += new EventHandler<OrientationChangedEventArgs>(Orientation_OrientationChanged); } void Orientation_OrientationChanged(object sender, OrientationChangedEventArgs e) { if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait)) { MessageBox.Show("竖放"); } else { MessageBox.Show("横放"); } } } }
2、演示如何实现程序的本地化
Localization.xaml
<phone:PhoneApplicationPage x:Class="Demo.Feature.Localization" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <phone:PhoneApplicationPage.Resources> <!-- 注:AppResources 里的类和构造函数需要 public 的要手动改成 public --> <resources:AppResources xmlns:resources="clr-namespace:Demo.Resources" x:Key="MyLocalization" /> </phone:PhoneApplicationPage.Resources> <Grid x:Name="LayoutRoot" Background="Transparent"> <StackPanel Orientation="Vertical"> <TextBlock Name="lblMsg" /> <!-- xaml 方式应用本地化 --> <TextBlock Text="{Binding Path=Software, Source={StaticResource MyLocalization}}" /> </StackPanel> </Grid> </phone:PhoneApplicationPage>
Localization.xaml.cs
/* * 演示如何本地化应用程序,相关资源文件在 Resources 目录下 * * 注:本地化应用程序标题(标题分为两种:应用程序列表中的标题和“磁贴”上的应用程序标题,它们可以不同)请参看 http://msdn.microsoft.com/en-us/library/ff967550(v=vs.92).aspx */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using Demo.Resources; namespace Demo.Feature { public partial class Localization : PhoneApplicationPage { public Localization() { InitializeComponent(); // 代码方式应用本地化 lblMsg.Text = AppResources.Network; } } }
3、演示如何提供支持试用体验的应用程序
TrialExperience.xaml
<phone:PhoneApplicationPage x:Class="Demo.Feature.TrialExperience" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <StackPanel Orientation="Vertical"> <Button Name="btnTrial" Content="试用版可用的功能" Click="btnTrial_Click" /> <Button Name="btnNormal" Content="正式版里才有的功能" Click="btnNormal_Click" /> <Button Name="btnBuy" Content="购买正式版" Click="btnBuy_Click" /> </StackPanel> </Grid> </phone:PhoneApplicationPage>
TrialExperience.xaml.cs
/* * 演示如何在收费应用程序中加入试用体验 * * LicenseInformation - 应用程序的许可证信息 * IsTrial() - 是否是试用版 */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using Microsoft.Phone.Marketplace; using Microsoft.Phone.Tasks; namespace Demo.Feature { public partial class TrialExperience : PhoneApplicationPage { private static LicenseInformation _licenseInfo = new LicenseInformation(); private static bool _isTrial = true; public TrialExperience() { InitializeComponent(); // 检查许可证,仅为测试用,实际项目中最好将此逻辑放到 Application_Launching 和 Application_Activated 中 CheckLicense(); } private void CheckLicense() { #if DEBUG // 仅调试用,强行指定程序为试用版 _isTrial = true; #else // 获取当前安装到设备的版本是否为试用版 _isTrial = _licenseInfo.IsTrial(); #endif // 如果是试用版则禁用正式版的功能 if (_isTrial) btnNormal.IsEnabled = false; } private void btnTrial_Click(object sender, RoutedEventArgs e) { MessageBox.Show("试用版可用的功能"); } private void btnNormal_Click(object sender, RoutedEventArgs e) { MessageBox.Show("正式版里才有的功能"); } private void btnBuy_Click(object sender, RoutedEventArgs e) { // 购买的话,直接打开应用程序在商店的详细页就好 MarketplaceDetailTask marketPlaceDetailTask = new MarketplaceDetailTask(); marketPlaceDetailTask.Show(); } } }
4、演示如何使用系统主题资源
ThemeResources.xaml
<phone:PhoneApplicationPage x:Class="Demo.Feature.ThemeResources" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <TextBlock Text="使用系统主题资源" Style="{StaticResource PhoneTextExtraLargeStyle}" /> <HyperlinkButton Content="全部系统主题资源" NavigateUri="http://msdn.microsoft.com/en-us/library/ff769552(v=vs.92)" TargetName="_blank" /> </Grid> </phone:PhoneApplicationPage>
5、演示如何实现本地数据的加密解密
EncryptData.xaml
<phone:PhoneApplicationPage x:Class="Demo.Feature.EncryptData" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <Grid x:Name="LayoutRoot" Background="Transparent"> <TextBlock Text="注:不同的应用程序有不同的密钥" /> </Grid> </phone:PhoneApplicationPage>
EncryptData.xaml.cs
/* * 演示如何对数据做加密解密 * * ProtectedData - 用于加密解密数据 * Protect() - 加密数据 * Unprotect() - 解密数据 * * 注:不同的应用程序有不同的密钥,所以本示例的加密解密仅针对同一应用程序有效。应用场景为:本地数据的加密解密 */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using System.Security.Cryptography; using System.Text; namespace Demo.Feature { public partial class EncryptData : PhoneApplicationPage { private string _base64 = ""; public EncryptData() { InitializeComponent(); EncryptDemo(); DecryptDemo(); } private void EncryptDemo() { byte[] plainText = Encoding.UTF8.GetBytes("webabcd"); byte[] protectedData = ProtectedData.Protect(plainText, null); _base64 = Convert.ToBase64String(protectedData); MessageBox.Show("字符串“webabcd”加密且base64后的数据:" + Environment.NewLine + _base64); } private void DecryptDemo() { byte[] protectedData = Convert.FromBase64String(_base64); byte[] plainText = ProtectedData.Unprotect(protectedData, null); MessageBox.Show("解密后的数据:" + Environment.NewLine + Encoding.UTF8.GetString(plainText, 0, plainText.Length)); } } }
OK
[源码下载]
相关文章推荐
- 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密
- Windows Phone应用程序中加密解密数据
- 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏
- 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏
- 量子通信利用量子力学原理产生密钥对信息进行加密和解密,并采用量子纠缠效应进行密钥分发,被认为是当今最安全的通信系统.有两项特性,一个是不可分割,一个是不可复制
- windows phone开发之客户端本地简单填充加密解密
- windows phone开发之客户端本地简单填充加密解密
- 基于角色的权限管理系统--前端登录数据js加密后端解密(DES)
- Windows Phone开发之客户端本地简单填充加密解密
- 网络数据通信加密系统中加密解密流程
- Orubase:为Windows Phone、Android和iOS平台开发混合本地手机应用程序
- WP7应用开发笔记-豆知识 使用本地值的时候应该多考虑使用系统主题资源
- 前端登录数据js加密后端解密(DES)-基于角色的权限管理系统
- Android手机6.0系统查询本地视频音频数据库查不出来数据的办法
- Android-使用sqlcipher加密解密本地数据库-解密-读取加密数据
- Windows Phone 7编程学习点滴二——设备方向、系统主题和系统托盘
- Windows Phone 7编程学习点滴二——设备方向、系统主题和系统托盘
- ios加密后的数据保存本地,解密时为何失败
- 量子通信利用量子力学原理产生密钥对信息进行加密和解密,并采用量子纠缠效应进行密钥分发,被认为是当今最安全的通信系统.有两项特性,一个是不可分割,一个是不可复制
- MAC系统用RSA 对数据进行加密解密