修炼九阴真经Windows Phone开发 (7):本地化应用程序栏Localizing an Application Bar 下...

本节介绍另一个本地化的方法:

在项目中添加资源文件:(这个文件将包含应用程序的默认语言的资源)

将要名称和值添加进去。(作为应用程序中向用户显示字符串值).

重复上面的方法,向项目中添加更多的其它语言资源文件。(参见后面的截图)

 

定义默认的区域

1.在解决方案资源管理器中,右键单击项目名称,选择属性,在application选项卡中,点 程序集信息。在非特定语言列表中,选择默认区域性。此标识语言的默认资源文件

中的字符串。例如,如果默认资源文件被命名为AppResources.resx,并在该文件中的字符串支持英语,则可以选择english作为项目的中立国语言。

 

添加LocalizedStrings类处理资源文件:

    public class LocalizedStrings{public LocalizedStrings(){}private static ApplicationBarSample.AppResources localizedresources = new ApplicationBarSample.AppResources();public ApplicationBarSample.AppResources Localizedresources { get { return localizedresources; } }}

 

主工程CS代码:

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.Shell;
using System.Globalization;
using System.Threading;namespace ApplicationBarSample
{public partial class MainPage : PhoneApplicationPage{#region Initialization/// <summary>/// Constructor for the PhoneApplicationPage/// The ApplicationBar is initialized. Icon buttons and menu items are added/// to the ApplicationBar and event handlers are set./// </summary>public MainPage(){InitializeComponent();this.SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape;ApplicationBar = new ApplicationBar();ApplicationBar.IsMenuEnabled = true;ApplicationBar.IsVisible = true;ApplicationBar.Opacity = 1.0;ApplicationBarIconButton hide = new ApplicationBarIconButton(new Uri("/Images/expand.png", UriKind.Relative));//hide.Text = "hide";hide.Text = AppResources.ButtonText;hide.Click += new EventHandler(hide_Click);ApplicationBarIconButton opacity = new ApplicationBarIconButton(new Uri("/Images/opacity.png", UriKind.Relative));//opacity.Text = "opacity";opacity.Text = AppResources.ButtonText;opacity.Click += new EventHandler(opacity_Click);ApplicationBarIconButton enabled = new ApplicationBarIconButton(new Uri("/Images/menuenabled.png", UriKind.Relative));//enabled.Text = "enabled";enabled.Text = AppResources.ButtonText;enabled.Click += new EventHandler(enabled_Click);ApplicationBar.Buttons.Add(hide);ApplicationBar.Buttons.Add(opacity);ApplicationBar.Buttons.Add(enabled);//ApplicationBarMenuItem foregroundItem = new ApplicationBarMenuItem("use foreground color");ApplicationBarMenuItem foregroundItem = new ApplicationBarMenuItem(AppResources.MenuItemText);foregroundItem.Click += new EventHandler(foregroundItem_Click);//ApplicationBarMenuItem accentItem = new ApplicationBarMenuItem("use accent color");ApplicationBarMenuItem accentItem = new ApplicationBarMenuItem(AppResources.MenuItemText);accentItem.Click += new EventHandler(accentItem_Click);ApplicationBar.MenuItems.Add(foregroundItem);ApplicationBar.MenuItems.Add(accentItem);UpdateText();}#endregion#region User Iterface/// <summary>/// Click handler for accent color menu item./// Changes the colored UI elements to the built-in PhoneAccentColor/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>void accentItem_Click(object sender, EventArgs e){UpdateColor((Color)Resources["PhoneAccentColor"]);}/// <summary>/// Click handler for accent color menu item./// Changes the colored UI elements to the built-in PhoneForegroundColor/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>void foregroundItem_Click(object sender, EventArgs e){UpdateColor((Color)Resources["PhoneForegroundColor"]);}/// <summary>/// Click handler for opacity icon button./// Sets the opacity value of the ApplicationBar to 0, 1, or .5/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>void opacity_Click(object sender, EventArgs e){if (ApplicationBar.Opacity < .01){ApplicationBar.Opacity = 1;}else if (ApplicationBar.Opacity > .49 && ApplicationBar.Opacity < .51){ApplicationBar.Opacity = 0;}else{ApplicationBar.Opacity = .5;}UpdateText();}/// <summary>/// Click handler for hide icon button./// Changes the Visible property of the ApplicationBar to false/// And makes the "Show Application Bar" button visible/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>void hide_Click(object sender, EventArgs e){ApplicationBar.IsVisible = false;showButton.Visibility = Visibility.Visible;UpdateText();}/// <summary>/// Click handler for menu enable icon button./// Changes the IsMenuEnabled property of the ApplicationBar/// When IsMenuEnabled is false, the menu will not pop up/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>void enabled_Click(object sender, EventArgs e){ApplicationBar.IsMenuEnabled = !ApplicationBar.IsMenuEnabled;UpdateText();}/// <summary>/// Click handler for show button./// Sets the Visible property of the Application Bar to true/// </summary>/// <param name="sender">The control that raised the click event.</param>/// <param name="e">An EventArgs object containing event data.</param>private void showButton_Click(object sender, RoutedEventArgs e){ApplicationBar.IsVisible = true;showButton.Visibility = Visibility.Collapsed;UpdateText();}/// <summary>/// Updates the TextBlock objects to reflect the current state/// of the ApplicationBar/// </summary>void UpdateText(){VisibleLabel.Text = "Application Bar Visible ";VisibleTextBlock.Text = ApplicationBar.IsVisible ? "Yes" : "No";OpacityLabel.Text = "Application Bar Opacity ";OpacityTextBlock.Text = ApplicationBar.Opacity.ToString("0.0");MenuEnabledLabel.Text = "MenuEnabled ";MenuEnabledTextBlock.Text = ApplicationBar.IsMenuEnabled ? "Yes" : "No";}/// <summary>/// Helper method for changing the color of the UI/// </summary>/// <param name="c">The new color for the UI elements</param>void UpdateColor(Color c){SolidColorBrush brush = new SolidColorBrush(c);VisibleTextBlock.Foreground = brush;OpacityTextBlock.Foreground = brush;MenuEnabledTextBlock.Foreground = brush;((LinearGradientBrush)Resources["Gradient"]).GradientStops[1].Color = c;}private void LocList_SelectedIndexChanged(object sender, SelectionChangedEventArgs e){// Set the current culture according to the selected locale and display information such as// date, time, currency, etc in the appropriate format.string nl;string cul;nl = locList.SelectedIndex.ToString();switch (nl){case "0":cul = "es-ES";break;case "1":cul = "de-DE";break;case "2":cul = "en-US";break;default:cul = "en-US";break;}// set this thread's current culture to the culture associated with the selected localeCultureInfo newCulture = new CultureInfo(cul);Thread.CurrentThread.CurrentCulture = newCulture;CultureInfo cc, cuic;cc = Thread.CurrentThread.CurrentCulture;cuic = Thread.CurrentThread.CurrentUICulture;VisibleLabel.Text = cc.NativeName;VisibleTextBlock.Text = "";//OpacityLabel.Text = cuic.DisplayName;OpacityLabel.Text = "";OpacityTextBlock.Text = "";MenuEnabledLabel.Text = "";MenuEnabledTextBlock.Text = "";//localize icon button text      if (this.ApplicationBar.Buttons != null){foreach (ApplicationBarIconButton btn in this.ApplicationBar.Buttons){btn.Text = cc.NativeName.Substring(0, cc.NativeName.ToString().Length/2);}}//localize menu buttons textif (this.ApplicationBar.MenuItems != null){foreach (ApplicationBarMenuItem itm in this.ApplicationBar.MenuItems){itm.Text = cc.NativeName;}}}#endregion}
}

 

 

 

XAML代码:

<phone:PhoneApplicationPage x:Class="PhoneApp6.MainPage"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"mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"FontFamily="{StaticResource PhoneFontFamilyNormal}"FontSize="{StaticResource PhoneFontSizeNormal}"Foreground="{StaticResource PhoneForegroundBrush}"SupportedOrientations="Portrait" Orientation="Portrait"shell:SystemTray.IsVisible="True"><!--LayoutRoot 是包含所有页面内容的根网格--><Grid x:Name="LayoutRoot" Background="Transparent"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><!--TitlePanel 包含应用程序的名称和页标题--><StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"><TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/><TextBlock x:Name="PageTitle" Text="页面名称" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/></StackPanel><!--ContentPanel - 在此处放置其他内容--><Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid></Grid><!--演示 ApplicationBar 用法的示例代码--><phone:PhoneApplicationPage.ApplicationBar><shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"><shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/><shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/><shell:ApplicationBar.MenuItems><shell:ApplicationBarMenuItem Text="菜单项 1"/><shell:ApplicationBarMenuItem Text="菜单项 2"/></shell:ApplicationBar.MenuItems></shell:ApplicationBar></phone:PhoneApplicationPage.ApplicationBar></phone:PhoneApplicationPage>

 

 

转载于:https://www.cnblogs.com/eagle1986/archive/2012/04/26/2472751.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统治世界的十大算法

全世界有3.14 % 的人已经关注了数据与算法之美软件正在统治世界。而软件的核心则是算法。算法千千万万&#xff0c;又有哪些算法属于“皇冠上的珍珠”呢&#xff1f;Marcos Otero 给出了他的看法。什么是算法&#xff1f;通俗而言&#xff0c;算法是一个定义明确的计算过程&…

Hosting in .NET Core

在.NET Core中&#xff0c;Host负责应用程序的启动和生命周期管理。除此之外&#xff0c;在Host中还可以设置日志(Logging)、配置(Configuration)和依赖关系注入(Dependency Injection)等。Host将一个常规的控制台应用程序(Console Application)变成了一个可以长时间运行的服务…

如何用大数据找女朋友?

全世界有3.14 % 的人已经关注了数据与算法之美导读找女朋友不仅需要好眼力&#xff0c;还需要一些技术含量。比如眼下正热的大数据&#xff0c;可以认真钻研&#xff0c;用数据分析来实现自己的“脱单计划”。小猿25岁&#xff0c;单身男&#xff0c;热衷大数据&#xff0c;并决…

ASP.NET Core 单元测试:如何 Mock HttpContext.Features.Get()

点击上方蓝字关注“汪宇杰博客”导语在 ASP.NET Core 里&#xff0c;如果你想单元测试 HttpContext.Features.Get<SomeType>()&#xff0c;这个技巧一定不要错过。问题我有个 Error 页面&#xff0c;需要取得异常的详细信息。我使用 HttpContext.Features.Get<IExcept…

mini api

大部分主流语言都支持web框架&#xff0c;并且实现起来相对轻便&#xff0c;简捷&#xff0c;比如&#xff1a;go的gin包package main import "github.com/gin-gonic/gin" func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200…

edge robert matlab,哪位熟悉matlab的大神路过瞄一眼哈

cxfx(believe truth believe me)UID240430帖子100精华积分1755蛋蛋币1755 枚威望0BT积分0阅读权限60性别男在线时间125 小时注册时间2013-3-27鸵鸟蛋主楼大中小发表于 2013-5-13 21:30 只看该作者哪位熟悉matlab的大神路过瞄一眼哈求大神指点迷津那&#xff01;谁来帮着看一下这…

php 图片 3d旋转图片,html5实现图片的3D旋转效果

我们先来看一下实现效果&#xff1a;(学习视频分享&#xff1a;html视频教程)H5旋转3D相册&#xff0c;鼠标放置暂停&#xff0c;图片灰度级为0&#xff0c;有放大效果。该实例运用H5和CSS3动画效果&#xff0c;未用javascript。提高了本人对CSS3 新属性的了解及掌握。完整代码…

数据这么多,且看R语言怎么处理!

随着科技的不断进步&#xff0c;数据处理量的不断增大&#xff0c;对数据进行处理、分析、统计建模、数据挖掘以及可视化的重要性日渐突出。如果说有一门简单易学、通俗易懂并且集上述功能为一体的编程语言让科研人员从中解脱出来&#xff0c;R语言当仁不让。作为一种统计分析软…

乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

Dapr是一个由微软主导的云原生开源项目&#xff0c;国内云计算巨头阿里云也积极参与其中&#xff0c;2019年10月首次发布&#xff0c;到今年2月正式发布V1.0版本。在不到一年半的时间内&#xff0c;github star数达到了1.2万&#xff0c;超过同期的kubernetes、istio、knative等…

催人泪下!一个程序员的悲惨故事

全世界有3.14 % 的人已经关注了数据与算法之美编辑&#xff1a;大数据二狗如果你喜欢这篇文章&#xff0c;就把它发给朋友看吧~精品课程推荐&#xff1a;选购数学科普正版读物严选“数学思维好物”送给孩子的益智礼物 | 办公室神器算法工程师成长阅读 | 居家高科技理工…

双十一,单身狗除了买买买,还能做什么?

躲得过618&#xff0c;躲得过1024终究躲不过双十一小天相信&#xff0c;肯定有很多的小伙伴正磨刀霍霍对准自己的手这个节日小天陪你们买买买&#xff01;11月6~13日超级数学建模携手网易云课堂“超级充电节”为大家带来多重惊喜&#xff0c;福利享不停&#xff01;趁此机会赶紧…

将 SharePoint 开发与其他形式的开发进行比较

从三个视点检查 SharePoint 开发很有用&#xff1a; 为 .NET Framework 构建可扩展的应用程序 构建数据库应用程序 构建传统的富客户端应用程序将 SharePoint 应用程序与可扩展的 .NET Web 应用程序进行比较 您可以从开发人员的角度检查 SharePoint 开发&#xff0c;该开发人员…

Visual Studio 2022这些重大更新,影响每一位.NET开发者!

难得五一长假&#xff0c;蹲家里盘点了一下这2年.NET的发展&#xff0c;可谓日新月异&#xff0c;重现辉煌&#xff0c;各种重磅更新接踵而至&#xff1a;1 .NET Core3.1各种最受欢迎、性能排行等榜单霸榜&#xff0c;3个月增加100w的关注者&#xff1b;2 .NET5让.NET Framewor…

影响计算机算法世界的十位大师

全世界有3.14 % 的人已经关注了数据与算法之美1、伟大的智者——Don E.Knuth&#xff0c;中文名&#xff1a;高德纳(1938-)算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来&#xff0c;不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》…

【翻译】WPF中的数据绑定表达式

有很多文章讨论绑定的概念&#xff0c;并讲解如何使用StaticResources和DynamicResources绑定属性。这些概念使用WPF提供的数据绑定表达式。在本文中&#xff0c;让我们研究WPF提供的不同类型的数据绑定表达式。介绍数据绑定是一种强大的技术&#xff0c;它允许数据在UI元素和业…

12个关键词,告诉你到底什么是机器学习

全世界只有3.14 % 的人关注了数据与算法之美编者按&#xff1a;随着人工智能(AI)技术对各行各业有越来越深入的影响&#xff0c;我们也更多地在新闻或报告中听到“机器学习”、“深度学习”、“增强学习”、“神经网络”等词汇&#xff0c;对于非专业人士来说略为玄幻。这篇文章…

MFC多语言实现方法

2019独角兽企业重金招聘Python工程师标准>>> 一、字符放在DLL资源文件中&#xff0c;切换资源模块(程序默认使用exe模块资源)。 实现要点&#xff1a; 新建一个只包含资源的DLL。通过函数AfxSetResourceHandle设置资源模块。 示意代码为&#xff1a; AfxSetResource…

oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)

通过案例学调优之--Oracle参数(db_file_multiblock_read_count)应用环境&#xff1a;操作系统&#xff1a; RedHat EL55Oracle&#xff1a; Oracle 10gR2Oracle DB_FILE_MULTIBLOCK_READ_COUNT是Oracle比较重要的一个全局性参数&#xff0c;可以影响系统级别及sessioin级别。…

转行程序员后,我开始后悔没做这件事

全世界有3.14 % 的人已经关注了数据与算法之美程序 数据结构 算法 ——图灵奖得主&#xff0c;计算机科学家N.Wirth(沃斯)作为程序员&#xff0c;我们做机器学习也好&#xff0c;做python开发也好&#xff0c;java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据…

工业互联网的两种极端想法和两点反思

目 录1. 概述2. 两种极端想法3. 两点反思1. 概述最近走访了很多企业&#xff0c;涉及到的行业包括&#xff1a;军工、特钢、有色、加工制造&#xff08;海洋钻井平台&#xff09;、建材、纺织等&#xff0c;在与不同的行业交流的过程中&#xff0c;我发现…