WPF合併資源字典

2021-09-06 15:33:37 字數 4682 閱讀 7485

1.合併多個外部資源字典成為本地字典

示例**

<

page.resources

>

<

resourcedictionary

>

<

resourcedictionary.mergeddictionaries

>

<

resourcedictionary

source

="myresourcedictionary1.xaml"

/>

<

resourcedictionary

source

="myresourcedictionary2.xaml"

/>

resourcedictionary.mergeddictionaries

>

resourcedictionary

>

page.resources

>

描述合併多個外部資源字典成為本地字典。當需要合併更多字典的時候只要在resourcedictionary.mergeddictionaries節中順序增加引用。

特別提示

合併字典(mergeddictionaries 集合中的字典)中對同一物件的同一子元素進行定義的時候,會產生覆蓋效果:在這種情況下,所返回的資源將來自在 mergeddictionaries 集合中最後乙個找到的字典。(在這裡會顯示myresourcedictionary2.xaml中的定義)。

合併字典(mergeddictionaries 集合中的字典)中對同一物件的不同子元素定義的時候會產生疊加效果。

2.合併多個外部資源字典到本地字典

示例**

<

page.resources

>

<

resourcedictionary

>

<

resourcedictionary.mergeddictionaries

>

<

resourcedictionary

source

="myresourcedictionary1.xaml"

/>

<

resourcedictionary

source

="myresourcedictionary2.xaml"

/>

resourcedictionary.mergeddictionaries

>

<

style

targettype

="…"

>

style

>

resourcedictionary

>

page.resources

>

描述合併多個外部資源字典到本地字典。當需要合併更多字典的時候只要在resourcedictionary.mergeddictionaries節中順序增加引用。

特別提示

合併字典(mergeddictionaries 集合中的字典)中對同一物件的同一子元素進行定義的時候,會產生覆蓋效果:在這種情況下,所返回的資源將來自在 mergeddictionaries 集合中最後乙個找到的字典。(在這裡會顯示myresourcedictionary2.xaml中的定義)。

合併字典(mergeddictionaries 集合中的字典)中對同一物件的不同子元素定義的時候會產生疊加效果。

如果資源鍵在主字典以及合併字典(mergeddictionaries 集合中的字典)中均進行了定義,則所返回的資源將來自主字典。這些範圍規則對於靜態資源引用和動態資源引用同樣適用。

3.合併外部字典同時對外部字典進行擴充或替代

示例**

<

page.resources

>

<

resourcedictionary

>

<

resourcedictionary.mergeddictionaries

>

<

resourcedictionary

source

="myresourcedictionary1.xaml"

/>

<

resourcedictionary

source="myresourcedictionary2.xaml">

<

style

targettype

="…"

>

style

>

resourcedictionary

>

resourcedictionary.mergeddictionaries

>

resourcedictionary

>

page.resources

>

描述合併外部字典同時對外部字典進行擴充或替代組合成本地字典。我們可以看到示例**中紅色的部分就是對外部字典myresourcedictionary2.xaml的乙個擴充或者替代( 注意,這不是常見的方案,合併字典的主要方案是合併來自外部檔案位置的資源。如果要在頁面的標記內指定資源,則通常應當在主 resourcedictionary(而不是合併字典)中定義這些資源。).當需要合併更多字典只要在mergeddictionaries集合中順序增加引用。

特別提示

合併字典(mergeddictionaries 集合中的字典)中對同一物件的同一子元素進行定義的時候,會產生覆蓋效果:在這種情況下,所返回的資源將來自在 mergeddictionaries 集合中最後乙個找到的字典。(在這裡會顯示myresourcedictionary2.xaml中的定義)。

合併字典(mergeddictionaries 集合中的字典)中對同一物件的不同子元素定義的時候會產生疊加效果。

如果資源鍵在主字典以及合併字典(mergeddictionaries 集合中的字典)中均進行了定義,則所返回的資源將來自主字典。這些範圍規則對於靜態資源引用和動態資源引用同樣適用。

4. 合併字典和**

合併字典可以通過**新增到 resources 字典中。對於任何 resources 屬性存在的預設 resourcedictionary(初始為空)還有乙個預設的 mergeddictionaries 集合屬性(初始為空)。若要通過**新增合併字典,可以獲取對所需的主 resourcedictionary 的引用,獲取它的 mergeddictionaries 屬性值,針對包含在 mergeddictionaries 中的泛型 collection 呼叫 add。您新增的物件必須是新的 resourcedictionary。在**中,不需要設定 source 屬性,而必須通過建立或載入乙個 resourcedictionary 物件來獲取該物件。載入現有 resourcedictionary 的一種方法就是,針對具有 resourcedictionary 根的現有 xaml 檔案流呼叫 xamlreader..::.load,然後將 xamlreader..::.load 返回值強制轉換為 resourcedictionary。

不建議用這種方式合併外部字典,這使得外部資源檔案跟硬編碼偶合.

5. 合併資源字典 uri

可通過多種方法來包括合併資源字典,這些方法由將要使用的統一資源識別符號 (uri) 格式來指示。概括地說,這些方法可以分為兩類:作為專案一部分來編譯的資源;不作為專案一部分來編譯的資源。

對於作為專案一部分來編譯的資源,可以使用引用資源位置的相對路徑。相對路徑是在編譯過程中計算的。您的資源必須以「資源」生成操作形式定義為專案的一部分。如果您將資源的 .xaml 檔案以「資源」形式包括在專案中,則不必將資源檔案複製到輸出目錄,因為資源已經包括在所編譯的應用程式中。您還可以使用「內容」生成操作,但是您必須將檔案複製到輸出目錄,而且還必須將同一路徑關係中的資源檔案部署到可執行檔案中。

注意:不要使用「嵌入的資源」生成操作。該生成操作本身受 wpf 應用程式的支援,但是在解析 source 時不會合併 resourcemanager,因此無法將單獨的資源從流中分離出來。只要您在訪問資源時使用的還是 resourcemanager,您仍可以使用「嵌入的資源」來實現其他目的。

乙個相關方法是使用 xaml 檔案的 pack uri 並稱之為「源」。pack uri 允許引用所引用程式集和其他方法的元件。有關 pack uri 的更多資訊,請參見 windows presentation foundation 應用程式資源、內容和資料檔案。

對於不是作為專案一部分來編譯的資源,uri 是在執行時計算的。可以使用常見的 uri 傳輸機制(如 file: 或 http:)來引用資源檔案。使用非編譯資源方法的缺點在於,file: 訪問機制需要額外的部署步驟,而 http: 訪問機制則直接使用 internet 安全區域。

6.重用合併字典

可以在應用程式之間重用或共享合併資源字典,因為要合併的資源字典可以通過任何有效的統一資源識別符號 (uri) 來引用。您需要執行的確切操作將取決於應用程式的部署策略以及所遵循的應用程式模型。使用前面提到的 pack uri 策略,在開發中可以通過共享程式集引用來將合併資源在多個專案之間共用。在該方案中,資源仍由客戶端分發,而且至少有乙個應用程式必須部署所引用的程式集。還可以通過乙個使用 http 協議的分布式 uri 來引用合併資源。

將合併字典編寫為本地應用程式檔案或本地共享儲存是另一種可能的合併字典/應用程式部署方案。

文章出處:

WPF 合併資源字典

原文 wpf 合併資源字典 1.合併多個外部資源字典成為本地字典 語言xaml 示例 描述 合併多個外部資源字典成為本地字典。當需要合併更多字典的時候只要在 resourcedictionary.mergeddictionaries 節中順序增加引用。特別提示 合併字典 mergeddictiona...

WPF合併資源字典

1.合併多個外部資源字典成為本地字典 示例 page.resources resourcedictionary resourcedictionary.mergeddictionaries resourcedictionary source myresourcedictionary1.xaml res...

WPF 資源字典

使用好處 儲存需要被本地話的內容 錯誤訊息字串等,實現軟編碼 減少重複的 重用樣式,實現多個專案之間的共享資源 修改乙個地方所有引用的地方都會被修改,方便統一風格 使用方法,歸納起來主要有下面幾個步驟 a.建立資源字典檔案,b.資源字典整合 c.使用字典中的資源 說明 在建立資源的時候要確保資源檔案...