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

人走茶凉 提交于 2019-11-27 14:49:11
sudarsanyes

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 });
    

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);

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!