2012-12-10 28 views
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; 
      } 
     } 
    } 

首先,我合併了所有的字典,然後我試圖動態地得到解釋像below.But它顯示錯誤(「MyString的」資源未找到)的值。問題合併的ResourceDictionary在WPF

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

回答

0

英文顯示de-DE。你是複製粘貼的受害者嗎?

不知道爲WPF,但在Silverlight Application.Current.Resources [ 「MyString的」]的作品。

在這旁邊,你加入到Application.Resources.MergedDictionaries所以Application.Resources.MergedDictionaries [「我的字符串」]也可以爲你工作。

也許FindResource只是看Application.Current.Resources?

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

0
  • 我懷疑Application.CurrentApp的構造可用作Application.Current應該最終被App本身。嘗試使用this.Resources.MergedDictionaries.Add代替。
  • 您的「App.xaml」中是否有任何內容?如果是這樣,它將取代App.Resources,並且您在構造函數中設置的所有內容都將丟失。
+0

我想就像你說的雖然它不是工作。如果我合併字典中Window_Loaded事件意味着,它將工作well.If我按照這個步驟來,我需要合併字典中的所有窗口,在這裏我需要從資源字典中獲取字符串值。 –