theme主題的原理

2021-10-02 06:36:50 字數 1137 閱讀 8991

在反編譯wpf程式集的時候經常會發現乙個命名為theme的資料夾

這個資料夾中存放著乙個預編譯的資源字典,如圖

這個實際上是wpf的乙個冷門功能:windows主題支援。

你可能沒有聽說過這個功能,但是如果你像我一樣是接觸過xp的上個世紀過來的人,就會記得windows的不同主題能夠影響元素外觀。

其實這個功能在wpf 也有保留,只是大家定製的樣式多了,沒有注意到罷了

參見為什麼同樣的wpf控制項在不同的電腦上呈現外觀不一致

不過如果你做過一些自定義控制項的話,你可能會熟悉無外觀控制項——將功能與外觀分離,通過重寫metadata

defaultstylekeyproperty.

overridemetadata

(typeof

(mycontrol)

,newframeworkpropertymetadata

(typeof

(mycontrol)

))

控制項就會通過程式集theme資料夾下的generic.xaml中尋找預設樣式

那麼有人會問了,這個和我們自己使用有外觀控制項,然後替換樣式有什麼不同麼

實際上wpf裡面有2套樣式styledefaultstyle, 如果某些屬性沒有被style顯示賦值

就會採用defaultstyle中的預設值。

那如果只用style不行嗎?

試想一下以下情況:

如果我們的button的預設控制項樣式寫在了style裡面,新的style替換之後,例如background,foreground這些屬性就全部都丟掉了,成為依賴屬性的預設值

所以在wpf中就採用了``defaultstyle`保證預設樣式的完整性

本文會經常更新,請閱讀個人部落格原文: ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。

Theme主題大全

視窗主題設定 這裡主要對於activity設定,用到系統自動主題內容 android theme android style theme.dialog 將乙個activity顯示為能話框模式 android theme android style theme.notitlebar 不顯示應用程式標題...

Android中的主題 Theme

所以同樣是v7相容包,會有api版本號不同的區別,要注意。更多主題 以下都是指 包含 中來看就可以,提示有就有,沒有就沒有。black 黑色風格 light 光明風格 dark 黑暗風格 daynight 白晝風格 wall 牆紙為背景 translucent 透明背景 panel 平板風格 dia...

Theme使用主題和定義

一 定義skin,在專案中新建asp.net資料夾,裡面有一項是主題資料夾theme,建立好後,裡面又可以增加skin 檔案,在裡面增加skinfile檔案,會預設增加skinfile資料夾,在skinfile檔案中可以這樣定義 方法1 方法2 也可以在專案裡再新定義乙個css檔案例如style.c...