Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问wpf应用程序中放置在另一个程序集中的资源(映像)_C#_.net_Wpf_Xaml_Dll - Fatal编程技术网

C# 无法访问wpf应用程序中放置在另一个程序集中的资源(映像)

C# 无法访问wpf应用程序中放置在另一个程序集中的资源(映像),c#,.net,wpf,xaml,dll,C#,.net,Wpf,Xaml,Dll,我有一个WPF项目,它有一个指向另一个程序集的链接,该程序集中只有一些资源(即图像和样式)。此程序集的名称为Library.WPF.Resources 我无法访问资源程序集中的图像 在资源程序集中,我包含了一个名为but_close.png的图像,并将其属性设置为 build action= content copy to output directory = don't copy 在wpf应用程序中,我使用以下图像 <Button Canvas.Left="997" Canvas.T

我有一个WPF项目,它有一个指向另一个程序集的链接,该程序集中只有一些资源(即图像和样式)。此程序集的名称为Library.WPF.Resources

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

在资源程序集中,我包含了一个名为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
我在十六进制编辑器中打开Library.WPF.Resources.dll并查找but_close.png,但在dll中找不到它

为什么图像不包含在dll中

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

已将此映像的生成操作更改为embeddedresource。现在它是在dll中,但当我运行应用程序时,仍然会发现找不到资源的错误

我的问题是:

1-资源程序集中的映像的正确生成操作是什么

2-为什么我可以访问另一个xaml页面中的映像?

将生成操作设置为“资源”。 确保资源访问修饰符为“public”

按如下方式访问资源:

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


生成操作必须设置为
Resource
。然后重建所有内容。@Clemens:当我将构建操作设置为Resource时,我在dll中看不到我的映像。我在十六进制编辑器中打开了dll,查找but_close.png,但找不到它。@mans没关系。另外,您在project Library.WPF.Resources中有文件夹资源?@Clemens:有,但我正在使用包uri指向我的库程序集中的资源。@Clemens:我将资源项目中的映像目录移到了根目录,因此包uri为:pack://application:,,,/Library.WPF.Resources;component/Images/but\u close.png“我得到的是images/but_close.png无法找到。如何将资源访问修改器设置为public?右键单击项目。单击“属性”。在“资源”选项卡中,您会发现几个组合框,如“添加资源”和“访问修饰符”,您是否尝试过此解决方案?是的,我测试过,但不起作用。属性页中的资源是windoform属性,而不是wpf。
<Grid>
    <Image Source ="pack://application:,,,/Library.WPF;component/Resources/but_close.png" Stretch="Fill"/>
</Grid>