一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

閑話WPF之十三(WPF中的資源)

 joojo 2007-10-16
資源是保存在可執(zhí)行文件中的一種不可執(zhí)行數(shù)據(jù)。通過資源我們可以包含圖像、字符串等等幾乎是任意類型的數(shù)據(jù)。如此重要的功能,.NET Framework當(dāng)然也是支持的,其中內(nèi)建有資源創(chuàng)建、定位、打包和部署的工具。在.NET中可以創(chuàng)建.resx.resources文件。其中.resxXML項(xiàng)組成。.resx只是一種中間格式,不能被應(yīng)用程序直接使用,它必須用工具轉(zhuǎn)換為.resource格式。

WPF中,資源的含義和處理方式與傳統(tǒng)的Win32Windows Forms資源有所區(qū)別。首先,不需要?jiǎng)?chuàng)建.resx文件,只需要在工程中指出資源即可,其它所有的工作都由WPF完成。其次,WPF中的資源不再像.NET中有資源ID,在XAML中引用資源需要使用Uri。最后,在WPF的資源中,幾乎可以包含所有的任意CLR對(duì)象,只要對(duì)象有一個(gè)默認(rèn)的構(gòu)造函數(shù)和獨(dú)立的屬性。在WPF本身的對(duì)象中,可以聲明如下四種對(duì)象:Style、BrushesTemplatesDataSource。

在定義具體的資源之前,我們先考慮如下幾個(gè)相關(guān)的問題:

1、資源的有效范圍:在WPF中,所有的框架級(jí)元素(FrameworkElement或者FrameworkContentElement)都有一個(gè)Resource屬性。也就是說。我們可以在所有這類元素的Resource子元素中定義屬性。在實(shí)踐中,最常用的三種就是三種根元素所對(duì)應(yīng)的資源:ApplicationPageWindow。顧名思義,在Application根元素下定義的資源將在當(dāng)前整個(gè)應(yīng)用程序中可見,都可以訪問。在PageWindow中定義的元素只能在對(duì)應(yīng)的PageWindow中才能訪問。

2、資源加載形式:WPF提供了兩種資源類型:Static資源和Dynamic資源。

兩種的區(qū)別主要有兩點(diǎn):A)、Static資源在編譯時(shí)決議,而Dynamic資源則是在運(yùn)行時(shí)決議。B)、Static資源在第一次編譯后即確定了相應(yīng)的對(duì)象或者值。此后不能對(duì)其進(jìn)行修改,即使修改成功也是沒有任何意義的,因?yàn)槠渌褂觅Y源的對(duì)象不會(huì)得到通知。Dynamic資源不同,它只有在運(yùn)行過程中真正需要時(shí),才會(huì)在資源目標(biāo)中查找。所以我們可以動(dòng)態(tài)的修改Dynamic資源。顯而易見,Dynamic資源的運(yùn)行效率將比Static資源低。

3、不管是Static資源還是Dynamic資源,所有的資源都需要設(shè)置Key屬性:x:Key=”KeyName”。因?yàn)?/span>WPF中的資源沒有資源ID,需要通過資源Key來標(biāo)識(shí)以方便以后訪問資源。范圍資源時(shí)我們根據(jù)資源的類型使用StaticResource或者DynamicResource標(biāo)記擴(kuò)展。

好了,對(duì)WPF中的資源所有了解后,我們看一些簡(jiǎn)單的例子:

<Window

     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<StackPanel>

     <StackPanel.Resources>

           <SolidColorBrush x:Key="MyBrush" Color="gold"/>

     </StackPanel.Resources>

     <TextBlock Foreground="{StaticResource MyBrush}" Text="Text"/>

</StackPanel>

</Window>

在這個(gè)例子中,我們?cè)?/span>StackPanel元素的Resource子元素中定義了一個(gè)SolidColorBrush資源。然后在后面通過StaticResouce標(biāo)記擴(kuò)展,利用前面的x:Key屬性訪問定義好的資源。

資源除了可以在XAML聲明外,還可以通過代碼進(jìn)行訪問控制。支持Resource屬性的對(duì)象都可以通過FindResource、以及Resource.AddResource.Remove進(jìn)行控制:

<Window

     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Window.Resouce>

     <SolidColorBrush x:Key="MyBrush" Color="gold"/>

</Window.Resouce>

</Window>

我們先在代碼XAMLWindow.Resource中定義了一個(gè)MyBrush。在代碼中可以如下對(duì)其進(jìn)行訪問:

SolidColorBrush brush = this.FindResource("MyBrush") as SolidColorBrush;

如果需要進(jìn)一步修改或者刪除資源時(shí),可如下編碼:

this.Resouce.Remove(“MyBrush”);      //刪除MyBrush資源

this.Resouce.Add(“MyBrush”);         //重新動(dòng)態(tài)添加資源

說明:以上三處的this引用都是特指我們定義MyBrush的元素Window。讀者朋友可根據(jù)實(shí)際情況修改。

    本站是提供個(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)論公約

    類似文章 更多

    尹人大香蕉中文在线播放| 欧美一区二区三区99| 日韩人妻有码一区二区| 国产不卡在线免费观看视频| 亚洲国产欧美久久精品| 99久久精品一区二区国产| 高清亚洲精品中文字幕乱码| 成人精品国产亚洲av久久| 欧美一区二区三区高潮菊竹| 欧美熟妇一区二区在线| 午夜久久久精品国产精品| 亚洲在线观看福利视频| 视频在线免费观看你懂的| 欧美国产日产综合精品| 美日韩一区二区精品系列| 自拍偷拍一区二区三区| 国产永久免费高清在线精品| 日韩三极片在线免费播放 | 欧美日韩国产精品黄片| 久久国产精品热爱视频| 午夜视频免费观看成人| 深夜少妇一区二区三区| 色婷婷人妻av毛片一区二区三区| 亚洲专区中文字幕视频| 欧美熟妇一区二区在线| 国产精品久久香蕉国产线| 九七人妻一区二区三区| 色婷婷国产熟妇人妻露脸| 福利视频一区二区三区| 日本一本在线免费福利| 免费在线成人激情视频| 精品人妻久久一品二品三品| 九九热这里有精品20| 中文字幕人妻av不卡| 久久成人国产欧美精品一区二区| 精品女同在线一区二区| 国产伦精品一一区二区三区高清版 | 国产午夜福利在线观看精品| 久一视频这里只有精品| 国产综合香蕉五月婷在线| 欧美一区二区三区喷汁尤物|