原文: wpfのuri(讓你完全明白wpf的圖檔加載方式以及URI寫法)
絕對 pack WPF URI
pack://application:,,,/是協定;“,,,”是“///”的變體
1.資源檔案 — 本地程式集
Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
子檔案夾中的資源檔案 — 本地程式集(資源檔案在本地程式集的子檔案夾)
Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
2.資源檔案 — 所引用的程式集(資源檔案在别的程式集)
Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
3.所引用的程式集的子檔案夾中的資源檔案(資源檔案别的程式的子檔案夾)
Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
4.所引用的版本化程式集中的資源檔案(版本化在中間加入版本資訊)
Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
綜上:路徑前部分是”pack://application;,,,/程式集名字;”;後半部分”component/路徑“”;合起來是一個絕對路徑;如果是本地程式集,程式集名字和compoent可以省略(;也省略掉)
WPF URI内容檔案
1.Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
2.子檔案夾中的内容檔案
Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
3.源站點檔案
Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
4.子檔案夾中的源站點檔案
Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);
相對 pack URI
1.WPF URI資源檔案 — 本地程式集
Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
2.子檔案夾中的資源檔案 — 本地程式集
Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
3.資源檔案 — 所引用的程式集
Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
4.子檔案夾中的資源檔案 — 所引用的程式集
Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
内容檔案
Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
WPF URI子檔案夾中的内容檔案Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);
特點:不用協定
一、加載本項目的圖檔 WPF引入了統一資源辨別Uri(Unified Resource Identifier)來辨別和通路資源。 其中較為常見的情況是用Uri加載圖像。Uri表達式的一般形式為:協定+授權+路徑 協定:pack:// 授權:有兩種。一種用于通路編譯時已經知道的檔案,用application:/// 一種用于通路編譯時不知道、運作時才知道的檔案,用siteoforigin:///
一般用逗号代替斜杠,也就是改寫作application:,,,和pack:,,, 路徑:分為絕對路徑和相對路徑。一般選用相對路徑,普适性更強
下面,我們舉一個簡單的例子: pack://application:,,,/images/my.jpg 當然,WPF預設Uri設定有pack://application:,,,,是以我們也可以直接将其寫作:/images/my.jpg
後邊寫例子程式時,為了讓讀者更好的了解Uri,我們都采用完整的Uri寫法。 下面在講講裝載圖檔的兩種方式,一種用XAML引用資源,一種用代碼引用資源。
用XAML引用資源:
|
也可以這樣
|
用代碼引用資源:
|
也可以直接使用代碼中引用圖檔資源
|
二、WPF 調用資源圖檔
|
三、WPF引用外部項目資源的方法 WPF中如果你使用的資源檔案不是本程式集的,是另外的程式集,就可以這樣做: 1.引用要用的程式集,pack://application:,,,/程式集名稱;component/路徑 ,其中pack://application:,,,可以省略 示例:
|
或者
|
四、使用SiteOfOrigin
|