免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

閑話WPF之十八(WPF中的資源 [4] )

 joojo 2007-10-16
前一個(gè)Post當(dāng)中,我從資源編譯行為的角度討論了WPF中的資源。但是,不管是Resource還是Content都是在編譯時(shí)聲明資源。如果我們打破這個(gè)限制,不希望指定完全確認(rèn)的資源地址。WPF提供了一種類似IE地址定位的抽象,它根據(jù)應(yīng)用程序部署的位置決議。

WPF將應(yīng)用程序的起源地點(diǎn)進(jìn)行概念上的抽象。如果我們的應(yīng)用程序位于http://yilinglai.cnblogs.com/testdir/test.application。我們應(yīng)用程序的起源地點(diǎn)http://yilinglai.cnblogs.com/testdir/,那么我們就可以在應(yīng)用程序中這樣指定資源位置:

<Image Source=”pack://siteoforigin:,,,/Images/Test.JPG”/>

通過這種包裝的Uri,使用資源的引用更加靈活。那么,這種類似Internet應(yīng)用程序的資源包裝Uri指定方式有什么優(yōu)點(diǎn)呢?

1)、應(yīng)用程序Assembly建立后,文件也可被替代。

2)、可以使文件只在需要使才被下載。

3)、編譯應(yīng)用程序時(shí),我們不需要知道文件的內(nèi)容(或者文件根本不存在)。

4)、某些文件如果被嵌入到應(yīng)用程序的Assembly后,WPF將不能加載。比如Frame中的HTML內(nèi)容,Media文件。

這里的pack://其實(shí)是一種URIUniform Resource Identifiers)語法格式。pack://<authority><absolute_path>,其中的authority部分是一個(gè)內(nèi)嵌的URI。注意這個(gè)URI也是遵守RFC 2396文檔聲明的。由于它是被嵌入到URI當(dāng)中,因此一些保留字符必須被忽略。在我們前面的例子中,斜線(”/”)被逗號(hào)(”,”)代替。其它的字符如”%”、”?”都必須忽略。

前面例子中的siteoforigin可以理解為一種authority的特例。WPF利用它抽象了部署應(yīng)用程序的原始站點(diǎn)。比如我們的應(yīng)用程序在C:\App,而在相同目錄下有一個(gè)Test.JPG文件,訪問這個(gè)文件我們可以用硬編碼URI file:///c:/App/Test.JPG。另外一種方法就是這種抽象性:pack://siteoforigin:,,/Test.JPG。這種訪問方法的便利是不言而喻的!在XPS文檔規(guī)范中,對(duì)URI有更好的說明。有興趣朋友可以在此下載

也許你看到現(xiàn)在對(duì)此的理解有些問題。不用太著急,隨著你對(duì)WPF越來越熟悉,會(huì)有更多的體會(huì)。對(duì)于WPF的新手(我也是),對(duì)于此點(diǎn)不必過度糾纏。因?yàn)?/span>WPFApplication類中提供了一些有用的方法:

Application.GetResourceStream (Uri relativeUri);

Application.GetContentStream(Uri relativeUri);

Application.GetRemoteStream (Uri relativeUri);

通過使用這些函數(shù),隱藏了URI定位的細(xì)節(jié)。從這些函數(shù)的名稱我們可以看出,它們分別對(duì)應(yīng)于我在前面介紹的三種類型:Content、ResourceSiteofOrigin

最后,簡單的說明一下另一種使用資源的方式,直接定義資源,不使用任何的屬性,具體的用法看例子就明白了:

<StackPanel Name="sp1">
    <StackPanel.Resources>
      <Ellipse x:Key="It1" Fill="Red" Width="100" Height="50"/>
      <Ellipse x:Key="It2" Fill="Blue" Width="200" Height="100"/>
    </StackPanel.Resources>
    <StaticResource ResourceKey="It1" />
    <StaticResource ResourceKey="It2" />
</StackPanel>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多