0
public partial class App : Application
    {
        public App()
        {
            switch (Thread.CurrentThread.CurrentCulture.ToString())
            {
                case "de-DE":
                    var German = new Uri("..\\GlobalString\\Dictionary_de-DE.xaml", UriKind.RelativeOrAbsolute);
                    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = German });
                    break;
                case "it-IT":
                    var Italy = new Uri("..\\GlobalString\\Dictionary_it-IT.xaml", UriKind.RelativeOrAbsolute);
                    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = Italy });
                    break;
                case "es-ES":
                    var Spanish = new Uri("..\\GlobalString\\Dictionary_es-ES.xaml", UriKind.RelativeOrAbsolute);
                    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = Spanish });
                    break;
                case "fr-FR":
                    var France = new Uri("..\\GlobalString\\Dictionary_fr-FR.xaml", UriKind.RelativeOrAbsolute);
                    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = France });
                    break;
                default:
                    var English = new Uri("..\\GlobalString\\Dictionary_de-DE.xaml", UriKind.RelativeOrAbsolute);
                    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = English });
                    break;
            }   
        }
    }

最初にすべての辞書をマージしてから、以下のように辞書から値を動的に取得しようとしましたが、Error( 'MyString' resource not found ) が表示されています。

   private void Window_Loaded(object sender, RoutedEventArgs e)
    {
      string StringFromDictionary= Application.Current.FindResource("MyString");
    }
4

2 に答える 2

0
  • 最終的にそれ自体になるは​​ずなので、のコンストラクターApplication.Currentで使用できるとは思えません。代わりに使用してみてください。AppApplication.CurrentAppthis.Resources.MergedDictionaries.Add
  • 「App.xaml」に何かありますか? その場合は置き換えApp.Resourcesられ、コンストラクターで設定したものはすべて失われます。
于 2012-12-10T08:23:27.250 に答える
0

英語の場合、de-DE を示します。あなたはコピペの被害者ですか?

WPF についてはわかりませんが、silverlight では Application.Current.Resources["MyString"] が機能します。

これに加えて、 Application.Resources.MergedDictionaries に追加するので、 Application.Resources.MergedDictionaries["My String"] も機能する場合があります。

多分 FindResource は Application.Current.Resources を探すだけですか?

http://msdn.microsoft.com/en-us/library/system.windows.application.findresource(v=vs.100).aspx

于 2012-12-10T07:21:07.780 に答える