【轉】【WPF】資源讀取 URI

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   檔案   

一開始看到WPF裡面經常用如下語句來構造資源檔Uri:

Uri uri = new Uri("/AssemblyName;component/image.png");

我還以為這種格式的字串是URI標準規定的,但是網上查了一下卻沒發現有這種格式的URI字串。

 

URI是統一資源識別項,通用文法為:

協議名(http,https,ftp,file等)+冒號+協議所對應的內容

URI又分為URL和URN,URL是用來定義一個資源的訪問路徑.而URN則是用來定義一個資源的名稱。(http://zh.wikipedia.org/zh/統一資源標誌符)

 

仔細看了一下MSDN,才發現上面格式的字串是微軟體自己擴充出來的一種URI格式,即Pack URI.這種URI在WPF裡用得非常多,主要用來定位

資源檔,以及Xaml檔案等。

Pack URI主要是用於描述一個Package中所包含的組成單元。

1. Pack URI的主要文法

pack://authority/path

其中authority指這裡所指的Package的類型,而path主要指這裡所指的組成單元在Package中路徑。

WPF所支援的authority包括:application:/// 和 siteoforigin:/// :

前者主要用來描述在編繹時就已知的資源(比如:資源檔等被Project所引用的檔案在編繹時刻均已知),

而後者主要用來描述在編繹時無法確定其狀態的外部資源(比如:硬碟上的某個檔案,或者網格上的某個檔案)。

注意:在實際構建Pack URI的時需要將authority中所包含的"/"換成",". 因此 application:/// 應該為 application:,,,,siteoforigin:///類推。

2. Pack URI的用法

  (1)表示當前Assembly中所引用的資源時,採用如下格式構建Pack URI

pack://application:,,,/(資源相對於Assembly所在目錄的相對路徑)

  (2)表示當前Assemby所引用的其它Assembly所引用的資源時,採用如下格式構建Pack URI

pack://application:,,,/AssemblyShortName[;Version][;PublicKey];component/(資源相對於Assembly所在目錄的相對路徑)

  (3)表示siteoforigin類型的資源時,採用如下格式構建Pack URI

pack://siteoforigin:,,,/(資源相對於當前執行的assembly所在位置的路徑)

3. Absolute pack URI and relative pack URI

以上所說的都是Absolute pack URI,格式包含schema://authority/path.字串比較長,寫起來不是很方便。

因此還有一種簡化版的relative pack URI,構造時只需要使用path即可。

注意:當表示當前Assembly中所引用的資源時,path需表示目標資源相對於當前路徑的相對路徑。在路徑前加"/"表示相對於Assembly的根目錄

 

原文地址:http://www.cnblogs.com/Code-life/archive/2012/10/08/2715930.html

【轉】【WPF】資源讀取 URI

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.