如何在WPF中从外部程序集加载资源

时间:2012-05-02 12:05:26

标签: c# wpf uri

要创建Uri,您通常会执行类似

的操作
Uri uri = new Uri("pack://application:,,,/Localization/Texts.en-GB.xaml");

从这里你可以创建一个ResourceDictionary ..

ResourceDictionary dictionary = new ResourceDictionary();             
dictionary.Source = uri;

现在问题是如何使用程序集(嵌入式资源)执行相同操作?

Assembly asmbly = Assembly.LoadFrom("this_is_in_another_place/texts.dll")

这当然不起作用..

Uri uri = new Uri("/asmbly;component/Texts.en-GB.xaml");

1 个答案:

答案 0 :(得分:1)

由于我无法与Uri合作,因此这是一个有效的解决方案。

 Assembly asmbly = Assembly.LoadFrom("this_is_in_another_place/texts.dll")

 ResourceDictionary dic;

 using (Stream s = asmbly.GetManifestResourceStream("Texts.en-GB.xaml"))
 {
    using (XmlReader reader = new XmlTextReader(s))
    {
        dic = (ResourceDictionary)XamlReader.Load(reader);
    }
 }