ResourceDictionary来自另一个应用程序的链接资源

时间:2014-08-07 19:59:03

标签: c# wpf

我正在尝试加载从另一个应用程序链接的资源文件,保存文件的应用程序在发布时位于完全不同的文件夹中,所以我不确定这是否会影响问题。从第二个应用程序我链接ResourceDictionary和编译类型设置为资源,以便该文件嵌入到应用程序中。

然后我尝试了不同的pack://应用程序方法,但它只返回FileNotFoundException。但它甚至不应该返回这个,因为链接的资源应该嵌入到第二个应用程序中。

var languageDictionary = new ResourceDictionary();
languageDictionary.Source = new Uri("pack://application:,,,/First Application;component/en-US.xaml");

我已尝试过第一个应用程序的实际文件夹结构

var languageDictionary = new ResourceDictionary();
languageDictionary.Source = new Uri("pack://application:,,,/First Application;component/Utiltities/Resources/Locales/en-US.xaml");

如何通过将第二个应用程序中的链接资源嵌入到第二个应用程序中来成功使用链接的ResourceDictionary?

干杯。

2 个答案:

答案 0 :(得分:0)

在第二个应用程序中,程序集名称不是第一个应用程序的名称,而是第二个应用程序,具有适当的文件夹结构。

var languageDictionary = new ResourceDictionary();
languageDictionary.Source = new Uri("pack://application:,,,/Second Application;componcomponent/Utiltities/Resources/Locales/en-US.xaml");

答案 1 :(得分:0)

可能是FileNotFoundException的原因是First Application的ResourceDictionary合并了更多的字典,并且相对于第一个应用程序指定了Source(大多数情况下如何)。要使用这样的字典,您必须将源更改为绝对路径(包括程序集)

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/KsWare.Presentation;component/Styles/BusyAdornerVisual.xaml"/>
        <ResourceDictionary Source="/Styles/OtherVisual.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

如果字典包含类似&#34; OtherVisual&#34;的条目。除了可以将源更改为绝对路径之外,IMHO无法将此词典合并到自己的词典中。

因为这个问题我总是使用绝对路径,如果这对我来说意味着更多的工作。如果有其他解决方案,我会很高兴。 : - )