開發工具與關鍵技術:Visual Studio C# Window應用程式
作者:翁一凱
撰寫時間:2021/9/18
XAML标記擴充
一、标記擴充(Markup Extensions)
1、實際項目中為XAML控件屬性指派經常遇到:
·設計時屬性之處于未知狀态
·運作時才能擷取到
2、輕松實作XAML頁面屬性指派,資源引用,類型轉換等操作
二、特定于 WPF 的标記擴充
WPF 程式設計中最常用的标記擴充是支援資源引用的标記擴充(StaticResource 和
DynamicResource),和支援資料綁定的标記擴充 (Binding)。
StaticResource 通過替換已定義資源的值來為屬性提供值。 StaticResource 計算最終在 XAML 加載時進行,并且在運作時沒有通路對象圖的權限。
DynamicResource 通過将值推遲為對資源的運作時引用來為屬性提供值。 動态資源引用強制在每次通路此類資源時都進行新查找,且在運作時有權通路對象圖。 為了擷取此通路權限,WPF 屬性系統中的依賴項屬性和計算出的表達式支援DynamicResource 概念。 是以,隻能對依賴項屬性目标使用 DynamicResource。
Binding 使用在運作時應用于父對象的資料上下文來為屬性提供資料綁定值。 此标記擴充相對複雜,因為它會啟用大量内聯文法來指定資料綁定。
RelativeSource 提供的源資訊 Binding ,該資訊可在運作時對象樹中導航幾個可能的關系。 對于在多用途模闆中建立的綁定,或在未充分了解周圍的對象樹的情況下以代碼建立的綁定,此标記擴充為其提供專用源。
TemplateBinding 使控件模闆能夠使用模闆化屬性的值,這些屬性來自于将使用該模闆的類的對象模型定義屬性。 換言之,模闆定義中的屬性可通路僅在應用了模闆之後才存在的上下文。 有關詳細資訊,請參閱 TemplateBinding 标記擴充。
ColorConvertedBitmap 支援相對進階的映像方案。
ComponentResourceKey 和 ThemeDictionary 支援資源查找的各個方面,特别是支
持查找與自定義控件一起打包的資源和主題。
1、Binding(XAML載入時,将資料綁定到XAML對象)
2、StaticResorce(引用資料字典中定義的靜态資源)
3、TemplateBinding(XAML頁面中對象模闆綁定調用)
4、RelativeSource(對特定資料源引用)
(1)使用self模式
·目标對象将作為源對象綁定到自身
·可以實作同一對象元素不同屬性之間的綁定操作
(2)使用TemplatedParent模式
·僅在ControlTemplate(控件模闆) 或者DataTemplate (資料模闆)下有效
·不同的模闆,将傳回不同類型的綁定結果