当前位置: 首页 > 编程语言 > .NET综合 > 正文

WPF学习之资源-Resources(10)

时间:2010-07-18 cnblogs zlgcool Allan

· 在Application启动时根据不同语言来加载以语言命名的XAML文件(Resource Dictionary)。因为对于重名的资源,后来加载的资源将会胜出,所以以当前语言名加载的XAML文件中的资源项将会被引用。这就是多语言的本质!

public partial class App : Application
  {
    protected override void OnStartup(StartupEventArgs e)
    {
      base.OnStartup(e);

      LoadLanguage();
    }
    private void LoadLanguage()
    {
      CultureInfo currentCultureInfo = CultureInfo.CurrentCulture;
      ResourceDictionary langRd = null;
      try
      {
        langRd = Application.LoadComponent(
        new Uri(@"Language\" + currentCultureInfo.Name + ".xaml", UriKind.Relative)) as ResourceDictionary;
      }
      catch
      {
      }
      if (langRd != null)
      {
        if (this.Resources.MergedDictionaries.Count > 0)
        {
          this.Resources.MergedDictionaries.Clear();
        }
        this.Resources.MergedDictionaries.Add(langRd);
      }
    }
  }

· 在XAML中引用资源。

<TextBlock Canvas.Top="50" Width="100" Height="24" Text="{StaticResource Title_PM}" />

· 大功告成,运行程序你会看到默认的语言的显示:Project Manager.当然如果你的默认文化是英语的话。用程序换成中文试试结果?没问题,在LoadLanguage()之前更改语言即可:

base.OnStartup(e);
CultureInfo info = new CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = info;
Thread.CurrentThread.CurrentUICulture = info;
LoadLanguage();

简单吧?呵呵。有关Resource的东西基本上就这么多了,换肤我们再开辟另一个话题来谈吧。这可是WPF够炫的Feature之一哦。。。。

本文配套源码