Dynamically loading resource dictionary files to a wpf application gives an error

前端 未结 3 1118
天命终不由人
天命终不由人 2020-12-03 12:08

I am trying to add a xaml resource file dynamically using the statement,

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Sou         


        
相关标签:
3条回答
  • 2020-12-03 12:26

    To load a content file, you can call the GetContentStream method of the Application class, passing a pack URI that identifies the desired content file.

    Checkout

    http://msdn.microsoft.com/en-us/library/aa970494.aspx#Content_Files

    EDIT

    I did it successfully like this

        Uri uri = new Uri("Resources/MyDict.xaml", UriKind.Relative);
        StreamResourceInfo info = Application.GetContentStream(uri);
        System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();
        ResourceDictionary myResourceDictionary = 
                                       (ResourceDictionary)reader.LoadAsync(info.Stream);
        Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary);
    
    0 讨论(0)
  • 2020-12-03 12:28

    At last, it worked. Here is what I did,

    1. Went thru' http://msdn.microsoft.com/en-us/library/aa970069.aspx.
    2. Changed the Uri pattern to

      var foo = new Uri("pack://siteoforigin:,,,/resources/leaf_styles.xaml", UriKind.RelativeOrAbsolute);
      Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = foo });
      
    0 讨论(0)
  • 2020-12-03 12:39

    I encountered same "missing resource problem" and scratched my head for hours. Then I realized that my assembly name contains dots (.) and changed the resource assembly name, tested again and it worked. It was a 16x16 png image file which ı wanted to load. But I see that dotted assembly names causes error for soma cases and does not cause error for other cases.

    • 1) If you are loading a style from resource, it works
    • 2) If you are loading an image, it does not work. The resource can not be found.

    I used the same code for both cases but results are different. I don't know if it is a wpf bug.

    0 讨论(0)
提交回复
热议问题