如何使用URI包语法引用程序集(驻留在相对路径中)?

时间:2013-08-26 08:09:51

标签: wpf

我有这种解决方案文件夹结构:

C:\ TfsBindRoot \ MySln \ Development \ Sources \ WpfProj
C:\ TfsBindRoot \ MySln \发展\源头\资源

WpfProj中引用了资源项目。

我尝试了不同的变体,例如

 <ResourceDictionary Source="pack://application:,,,//Resources" />

 //and

 <ResourceDictionary Source="pack://application:,,,/../Resources" />

 //and

 <ResourceDictionary Source="pack://application:,,, ../Resources" />

但它没有看到图书馆。

2 个答案:

答案 0 :(得分:3)

您提供的路径似乎格式不正确。

路径取决于资源是在同一个包还是不同的包中。由于您的问题未提供应用程序包的详细信息,请查看MSDN站点以获取正确格式的详细信息。

<强>更新

引用程序集的子文件夹中的资源文件 - &gt; “包://应用:,,, / ReferencedAssembly;组件/子文件夹/ ResourceFile.xaml”

版本化引用程序集中的资源文件 - &gt; “包://应用:,,, / ReferencedAssembly; V1.0.0.0;组分/ ResourceFile.xaml”

更新2

我尝试过它有效。 “ResourceLibrary”是程序集名称。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/ResourceLibrary;component/Resources/ResourceFile.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

您可能缺少的一件事是ResourceFile.xaml,您可能会保留所有资源。我的ResourceFile.xaml看起来像:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="MyBrush" Color="Cornsilk"/>

</ResourceDictionary>

答案 1 :(得分:-2)

<ResourceDictionary Source="pack://application:,,,/Resources;component/YourResources.xaml" />

YourResources.xaml替换为包含资源的xaml文件名。