过年了 發表於 2025-4-13 15:25:00

WPF引用外部资源(样式、文件等)方式

<p>具体代码请下载 项目文件</p>
<blockquote>
<p>注:本项目使用VS2022开发环境、.NET8框架及MahApps.Metro界面UI。</p>
</blockquote>
<p>摘取关键代码如下:</p>
<pre><code class="language-xml">      &lt;StackPanel Grid.Row="0"&gt;
            &lt;!--***********************************************************************--&gt;
            &lt;!--【1】当1.jpg为当前程序集WpfTest2中的资源时(嵌入资源)--&gt;
            &lt;!--方式1--&gt;
            &lt;!--&lt;Image Source="Images/1.jpg" /&gt;--&gt;
            &lt;!--方式2--&gt;
            &lt;!--&lt;Image Source="/Images/1.jpg" /&gt;--&gt;
            &lt;!--方式3--&gt;
            &lt;!--&lt;Image Source="/WpfTest2;component/Images/1.jpg" /&gt;--&gt;
            &lt;!--方式4--&gt;
            &lt;Image Source="pack://application:,,,/WpfTest2;component/Images/1.jpg" /&gt;
            &lt;!--**************************************************************************--&gt;

            &lt;!--**************************************************************************--&gt;
            &lt;!--【2】当2.png为当前程序集WpfTest2中的内容且复制到输出目录时(松散文件)--&gt;
            &lt;!--方式1--&gt;
            &lt;!--&lt;Image Source="Images/2.png" /&gt;--&gt;
            &lt;!--方式2--&gt;
            &lt;!--&lt;Image Source="/Images/2.png" /&gt;--&gt;
            &lt;!--方式3--&gt;
            &lt;!--&lt;Image Source="/WpfTest2;component/Images/2.png" /&gt;--&gt;
            &lt;!--方式4--&gt;
            &lt;Image Source="pack://application:,,,/WpfTest2;component/Images/2.png" /&gt;
            &lt;!--**************************************************************************--&gt;

            &lt;!--**************************************************************************--&gt;
            &lt;!--【3】当3.jpg为外部程序集WpfTest2Library中的资源时(嵌入资源)--&gt;
            &lt;!--方式1--&gt;
            &lt;!--&lt;Image Source="/WpfTest2Library;component/Images/3.jpg" /&gt;--&gt;
            &lt;!--方式2--&gt;
            &lt;Image Source="pack://application:,,,/WpfTest2Library;component/Images/3.jpg" /&gt;
            &lt;!--**************************************************************************--&gt;
      &lt;/StackPanel&gt;
      &lt;StackPanel Grid.Row="2"&gt;
            &lt;!--**************************************************************************--&gt;
            &lt;!--【4】当a.jpg为外部文件绝对路径时(松散文件)--&gt;
            &lt;!--方式1--&gt;
            &lt;!--&lt;Image Source="C:\Users\Yan\source\repos\WpfTest2\WpfTest2\Images\a.jpg" /&gt;--&gt;
            &lt;!--方式2--&gt;
            &lt;Image Source="file:///C:/Users/Yan/source/repos/WpfTest2/WpfTest2/Images/a.jpg" /&gt;
            &lt;!--注:因以上绝对路径有可能不同,需要进行代替--&gt;
            &lt;!--**************************************************************************--&gt;

            &lt;!--**************************************************************************--&gt;
            &lt;!--【5】当2025-04-13_142530.bmp为网络URI路径时(URL)--&gt;
            &lt;Image Source="https://files-cdn.cnblogs.com/files/cncc/2025-04-13_142530.bmp" /&gt;
            &lt;!--注:因可能能网络问题,以上图片可能无法显示--&gt;
            &lt;!--**************************************************************************--&gt;

      &lt;/StackPanel&gt;
</code></pre>
<p>总结:</p>
<ol>
<li>不管是嵌入式资源、松散文件,均可使用<code>pack://application:,,,/程序集名称;component/路径1/.../文件名</code>的方式访问资源。<br>
也可以省略,编译器会自动补全。</li>
<li>嵌入式资源:通过 <code>pack://application:,,,/</code> 访问,路径严格受程序集结构约束。</li>
<li>松散文件/URL:使用相对路径、绝对路径,灵活性高,但需确保文件部署到位。</li>
</ol>
<p>参考界面:<br>
<img src="https://img2024.cnblogs.com/blog/580518/202504/580518-20250413152757962-1961802583.bmp" alt="image" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/cncc/p/18823294
頁: [1]
查看完整版本: WPF引用外部资源(样式、文件等)方式