WPF下使用Uri的執行個體教程
來源:互聯網
上載者:User
背景
在一個WPF開發的項目中要使用地圖,原來用的google地圖被屏蔽了,現在改用Baidu地圖。採用百度地圖的JavaScript API調用百度地圖的應用,在WPF平台上使用的的是Webbroswer進行訪問,中間就涉及到要用Webbroswer.Navigate載入html檔案,Navigate使用的資源是Uri,它預設訪問當前運行檔案夾下面的資源也就是/bin/Debug下的資源。
我們可以通過把我們的html檔案直接放在Debug檔案下解決這個問題。怎樣訪問當前運行檔案夾?參考附錄1。問題本就此可以解決,但是當我們的項目應用Git版本控制之後,Git預設情況下是不會把/bin/Debug檔案裡面的東西放入到版本控制中,也就是說如果其他人通過版本控制clone我們的項目的話,它的項目中是缺少html檔案的,現在我們要面臨的問題就是如何用Uri載入相對路徑下面的資源。
解決方案
Solution 1 :
還是訪問當前檔案夾下面的的資源,通過設定資源的屬性,在編譯的時候講該資源複製到項目的/bin/Debug下。具體的做法就是在項目指添加你的資源,然後更改其屬性中“複製到輸出目錄”改為“始終複製”,產生操作“內容”,具體做法參考一下
http://blog.csdn.net/yulongguiziyao/article/details/25131597
Solution 2 :
通過相對路徑的訪問,把你的資源放在項目的檔案夾下,然後通過擷取“../../”訪問上級目錄來擷取。比如在項目中添加ThirdParty檔案夾,並且在項目中ThirdParty下添加我要的資源BMap.html。我可以通過以下語句來訪問該資源:
new Uri(System.Environment.CurrentDirectory + @"/../../ThirdParty/BMap.html", UriKind.RelativeOrAbsolute)
System.Environemnt.CurrentDirectory也就是/bin/Debug目錄,通過/../../就回到了項目目錄,這樣項目目錄下面存在著ThirdParty目錄,我們就可以直接存取到這個資源了,同時這個資源也可以通過版本控制發布出去了,問題就可以解決了。