WPF-资源-二进制资源

二进制资源可以用3种不同的的方式进行打包:

  1. 嵌入程序集。
  2. 在编译时应用程序已知的松散文件。
  3. 在编译时应用程序不知道的松散文件。

定义二进制资源

  设定文件的生成操作

  • Resource

    将资源放入程序集中。

  • Content

    将资源作为一个松散文件,但向程序集种添加一个定制特性,该程序集将记录文件是否存在及其相对位置。

注意:

不要使用嵌入式资源(Embedded Resource)

XAML引用资源只支持Resource和Content。不支持嵌入式资源

访问二进制资源

通过统一资源标识符(URI)从代码或者XAML访问这些资源文件。

<StackPanel>
        <Button ToolTip="ContentResource">
            <Image Height="20" Width="20" Source="./Resource/Content.png"></Image>
        </Button>
        <Button ToolTip="Resource">
            <Image Height="20" Width="20" Source="./Resource/new.jpg"></Image>
        </Button>
    </StackPanel>

注意:已编译的Xaml不能通过简单的文件名引用当前目录下的二进制资源,除非把这个资源加到项目中。

如果资源没有在项目中。项目中的XAML文件不能引用到这些文件。

使用特殊语法访问不在项目中的文件。把文件直接靠别到Debug文件夹下,调试程序可以引用到这个不在项目中的文件。

<Button ToolTip="Resource">
            <Image Height="20" Width="20" Source="pack://siteOfOrigin:,,,/Content.png"></Image>
        </Button>

特殊语法的含义是:在程序部署的位置访问资源。

常见资源URI

/log.jpg Resource或Content
/b/log.jpg  
/c:/log.jpg 松散文件,绝对路径
file://c:/log.jpg 松散文件,绝对路径
\\pc1\log.jpg 共享路径
http://aaa.net/log.jpg 网址文件
/Dll;Component/log.jpg 另一个程序集,Resource生成
/Dll;Component/b/log.jpg 同上
pack://siteOfOrigin:,,,/log.jpg 松散文件,部署位置找文件

表中所有的引用都隐式使用了“pack://application;,,,”;不在项目中的文件要使用“siteOfOrigin”

 

posted @ 2020-05-11 10:03  snake1118  阅读(199)  评论(0编辑  收藏  举报