2014-04-02 36 views
2

我有一个WPF项目有一个链接到其中只有一些资源(即图像和样式)的另一个程序集。此程序集的名称是Library.WPF.Resources无法访问放置在另一个程序集中的资源(图像)在wpf应用程序

我无法访问资源程序集中的图像。

在资源组装我包括了一个称为but_close.png并设置一个图像是财产

build action= content 
copy to output directory = don't copy 

在WPF应用程序中,我使用这个形象,遵循

<Button Canvas.Left="997" Canvas.Top="10" Width="16" Height="14" Style="{StaticResource TransparentButton}" x:Name="CloseWindow"> 
      <Image > 
       <Image.Style> 
        <Style TargetType="{x:Type Image}"> 
         <Setter Property="Source" Value="pack://application:,,,/Library.WPF.Resources;component/Resources/Images/but_close.png"/> 
         <Style.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Property="Source" Value="/Library.WPF.Resources;component/Resources/Images/but_close_roll.png"/> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </Image.Style> 
      </Image> 
     </Button 

我看不到任何问题当我看着页面上包含这个按钮上wpf应用程序(没有错误表明应用程序找不到它,但是当我运行该应用程序时,我得到此错误:

{"Cannot locate resource 'resources/images/but_close.png'."} 

我在一个十六进制编辑器中打开了Library.WPF.Resources.dll并查找了but_close.png,并且我在dll中找不到它。

为什么图像不包含在dll中?

我将资源项目中but_close.png的构建操作更改为资源。同样的问题,它不包含在dll中。

将此映像的构建操作更改为嵌入式资源。现在它是在DLL中,但仍然当我运行应用程序时,我收到错误,找不到资源。

我的问题:

1什么是资源大会图像的正确生成操作吗?

2-为什么我可以在另一个xaml页面访问图像?

+2

生成操作必须设置为'Resource'。然后重建一切。 – Clemens

+0

@Clemens:当我将构建操作设置为Resource时,我无法在dll中看到我的图像。我在一个十六进制编辑器中打开dll,查找but_close.png,并找不到它。 – mans

+0

@mans没关系。此外,您在项目** Library.WPF.Resources **中有文件夹** Resources **? – user3449857

回答

0

将构建操作设置为“资源”。 确保资源的访问修饰符是“公开”

访问的资源是这样的:

<Grid> 
    <Image Source ="pack://application:,,,/Library.WPF;component/Resources/but_close.png" Stretch="Fill"/> 
</Grid> 
+0

如何设置资源访问修饰符为public? – mans

+0

右键单击该项目。点击“属性”。 在Resources选项卡中,您会看到几个combox,如“添加资源”和“访问修饰符” – GenericTeaCup

+0

您是否尝试过这种解决方案? – GenericTeaCup

相关问题