<col>
title
author
date
CreateTime
categories
WPF 使用 VisualStudio 2017 項目檔案
lindexi
2018-08-10 19:16:53 +0800
2018-05-31 18:56:11 +0800
VisualStudio WPF
本文告訴大家如何在 WPF 通路解決方案的檔案
在 WPF 如果需要通路項目的檔案,如在項目檔案放一張圖檔,需要在 xaml 或背景代碼讀取,這個就是需要用到本文的技術。
假如在 項目檔案 放一張圖檔,首先建立一個項目,然後随意找一張圖檔,放在項目上

注意需要檢視圖檔的屬性,如果圖檔的生成不是 Resources 那麼在使用下面的代碼還是找不到
最簡單在 xaml 擷取項目檔案的方式是直接寫相對 xaml 的路徑,下面的代碼寫在主界面
如果放在另一個檔案夾的 xaml 相對于圖檔是下一級,就需要使用下面代碼
因為很容易移動 xaml 檔案所在的檔案夾,如果移動了檔案夾,那麼剛才的路徑就需要修改,是以建議寫絕對路徑。
絕對路徑的寫法是 <code>pack://application:,,,/</code> 後面添加解決方案的路徑。
如在上圖,解決方案裡的 22f0c4ae0afad5e2fd91a6dcff052f2b.jpg 相對于解決方案是在根目錄,是以可以這樣寫
如果需要跨程式集通路,如我再建立一個項目B,讓剛才 A 項目引用 B 項目,在 B 項目放一張圖檔,然後在 A 項目引用B項目的圖檔 NearzooRasterCairralJeajismowwir.jpg 就需要在路徑寫上程式集
現在需要通路 B 項目的 NearzooRasterCairralJeajismowwir.jpg 就需要使用<code>pack://application:,,,/B;component/NearzooRasterCairralJeajismowwir.jpg</code>,格式就是<code>pack://application:,,,/程式集;component/相對B項目的檔案</code>,需要注意右擊看檔案是不是 Resources 如果不是還是無法找到
需要知道,程式集和項目的名字是可以不相同的,如剛才的 B 項目,實際上程式集和項目名字不相同,請看下圖
是以發現自己找不到資源,可能是項目名字和程式集不相同,需要右擊檢視程式集
如果引用了相同程式集的不同版本,就需要在路徑寫上版本,格式是<code>pack://application:,,,/程式集;版本;component/檔案相對根目錄</code>,具體代碼請看下面
在背景通路解決方案的檔案和在 xaml 通路的方法差不多,也是需要用到路徑,隻是調用的方法不相同
參見:Pack URIs in WPF
win10 uwp 通路解決方案檔案