博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修炼九阴真经Windows Phone开发 (7):本地化应用程序栏Localizing an Application Bar 下...
阅读量:5951 次
发布时间:2019-06-19

本文共 9996 字,大约阅读时间需要 33 分钟。

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

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

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

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

 

定义默认的区域

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        ///         /// Constructor for the PhoneApplicationPage        /// The ApplicationBar is initialized. Icon buttons and menu items are added        /// to the ApplicationBar and event handlers are set.        ///         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        ///         /// Click handler for accent color menu item.        /// Changes the colored UI elements to the built-in PhoneAccentColor        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        void accentItem_Click(object sender, EventArgs e)        {            UpdateColor((Color)Resources["PhoneAccentColor"]);        }        ///         /// Click handler for accent color menu item.        /// Changes the colored UI elements to the built-in PhoneForegroundColor        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        void foregroundItem_Click(object sender, EventArgs e)        {            UpdateColor((Color)Resources["PhoneForegroundColor"]);        }        ///         /// Click handler for opacity icon button.        /// Sets the opacity value of the ApplicationBar to 0, 1, or .5        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        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();        }        ///         /// Click handler for hide icon button.        /// Changes the Visible property of the ApplicationBar to false        /// And makes the "Show Application Bar" button visible        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        void hide_Click(object sender, EventArgs e)        {            ApplicationBar.IsVisible = false;            showButton.Visibility = Visibility.Visible;            UpdateText();        }        ///         /// Click handler for menu enable icon button.        /// Changes the IsMenuEnabled property of the ApplicationBar        /// When IsMenuEnabled is false, the menu will not pop up        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        void enabled_Click(object sender, EventArgs e)        {            ApplicationBar.IsMenuEnabled = !ApplicationBar.IsMenuEnabled;            UpdateText();        }        ///         /// Click handler for show button.        /// Sets the Visible property of the Application Bar to true        ///         /// The control that raised the click event.        /// An EventArgs object containing event data.        private void showButton_Click(object sender, RoutedEventArgs e)        {            ApplicationBar.IsVisible = true;            showButton.Visibility = Visibility.Collapsed;            UpdateText();        }        ///         /// Updates the TextBlock objects to reflect the current state        /// of the ApplicationBar        ///         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";        }        ///         /// Helper method for changing the color of the UI        ///         /// The new color for the UI elements        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 locale            CultureInfo 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 text            if (this.ApplicationBar.MenuItems != null)            {                foreach (ApplicationBarMenuItem itm in this.ApplicationBar.MenuItems)                {                    itm.Text = cc.NativeName;                }            }        }                #endregion    }}

 

 

 

XAML代码:

 

 

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

你可能感兴趣的文章
小弟的新书《Ext JS权威指南》终于出版了
查看>>
好吧好吧,就在这里消磨时间
查看>>
二层的,DTP+CAM/ARP
查看>>
2011工作总结
查看>>
javascript 操作DOM元素样式
查看>>
Android 内存管理 &Memory Leak & OOM 分析
查看>>
[转]html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
查看>>
[水]三个数学的小技巧题
查看>>
mysql中查看数据库的版本,什么版本
查看>>
[leetcode-342-Power of Four]
查看>>
MongoDB3.0 创建用户
查看>>
2017-2018-1 20155319 《信息安全系统设计基础》第3周学习总结
查看>>
express 3.0.x 中默认不支持flash() 的解决方法
查看>>
uva-111-dp
查看>>
算法学习1——矩阵转置
查看>>
Tcl与Design Compiler (九)——综合后的形式验证
查看>>
跨页数据传递
查看>>
Linux查看系统负载(CPU和MEM考虑)
查看>>
Codeforces Round #249 (Div. 2) B. Pasha Maximizes
查看>>
【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”(9patch 工具),让Android游戏开发更方便!...
查看>>