C# 在wpf中合并ResourceDictionary的问题

C# 在wpf中合并ResourceDictionary的问题,c#,wpf,xaml,C#,Wpf,Xaml,首先我合并了所有的字典,然后我尝试动态地从字典中获取值,如下所示。但是它显示了错误('MyString'resource not found) 对于英语,它显示de-de。你是复制粘贴的受害者吗 不确定是否使用WPF,但在silverlight应用程序中。Current.Resources[“MyString”]起作用 除此之外,您还可以将其添加到Application.Resources.MergedDictionaries中,这样Application.Resources.MergedDic

首先我合并了所有的字典,然后我尝试动态地从字典中获取值,如下所示。但是它显示了错误('MyString'resource not found


对于英语,它显示de-de。你是复制粘贴的受害者吗

不确定是否使用WPF,但在silverlight应用程序中。Current.Resources[“MyString”]起作用

除此之外,您还可以将其添加到Application.Resources.MergedDictionaries中,这样Application.Resources.MergedDictionaries[“我的字符串”]可能也适用于您

也许FindResource只是寻找Application.Current.Resources

  • 我怀疑
    应用程序。Current
    应用程序的构造函数中可用作
    应用程序。Current
    应该是
    应用程序本身。尝试使用
    this.Resources.MergedDictionaries.Add来代替
  • 你的“App.xaml”里有什么东西吗?如果是这样,它将替换
    App.Resources
    ,并且您在构造函数中设置的所有内容都将丢失

我按您所说的那样尝试了,尽管它不起作用。如果我在Window\u Loaded Event means中合并字典,它会很好地工作。如果我遵循此步骤,则意味着我必须在需要从资源字典中获取字符串值的所有窗口中合并字典。
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;
            }   
        }
    }
   private void Window_Loaded(object sender, RoutedEventArgs e)
    {
      string StringFromDictionary= Application.Current.FindResource("MyString");
    }