修炼九阴真经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
///
/// 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.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代码:
页:
[1]