首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 資源建立與使用:層級作用域、靜態/動態引用、圖形複用

     編輯:關於.NET

ResourceDictionary 基礎

核心類別 ResourceDictionary 類似 Hashtable,鍵值對存取。實際開發多使用 FrameworkElement.Resources 屬性或 XAML <Window.Resources> 定義。WPF 可能延遲建立資源(保持 BAML 形式),僅在首次存取時實例化,加速啟動。

資源層級作用域與 FindResource

FindResource 會沿著邏輯樹向上搜尋:元素 → 父元素 → … → 根元素 → Application.Resources → 系統資源。若直接存取 element.Resources[key] 僅查該元素字典。

資源搜尋層級

系統資源與覆寫

系統資源由 SystemColors、SystemFonts、SystemParameters 暴露(400+ 項)。使用 FindResource(SystemColors.InfoBrushKey) 可讓應用程式層級資源覆寫系統設定;直接讀 SystemColors.InfoBrush 則繞過搜尋鏈。

StaticResource vs DynamicResource

  • StaticResource:編譯期/載入期解析一次,效能佳,適合不變資源。
  • DynamicResource:執行期建立追蹤連結,資源變更自動更新 UI,適合系統色彩等可變資源。
<Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<TextBlock Background="{StaticResource Foo}" />

動態引用系統資源鍵需配合 x:Static,否則會被視為字串鍵。

圖形資源複用策略

  • FrameworkElement 派生類(Ellipse、Canvas):同一實例只能出現在視覺樹一處,適合「抽離複雜標記」而非多處複用。
  • Drawing 類別(GeometryDrawing、DrawingGroup):非視覺元素,可自由多處引用。搭配 DrawingBrush 實現圖形磚貼。
  • Geometry 資源:最輕量,可被多個 GeometryDrawing 共用,適合大量相似圖形。
  • ControlTemplate:需保留版面配置能力時使用,可重複套用含 FrameworkElement 的模板。
Ellipse 資源單次使用
DrawingBrush 磚貼
ControlTemplate 版面配置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved