依賴屬性(DependencyProperty)是UWP的核心概念,它是有DependencyObject提供的一種特殊的屬性。由于UWP的幾乎所有UI元素都是集成于DependencyObject的FramewordElement,并且這些UI元素的幾乎所有屬性及它們出現(xiàn)在XAML中的幾乎所有屬性都是依賴屬性,所以可以說依賴屬性是專門為UI設(shè)計的屬性系統(tǒng)。
依賴屬性的定義:
/// <summary>/// 獲取或設(shè)置Title的值/// </summary> public string Title{ get { return (string)GetValue(TitleProperty); } set { SetValue(TitleProperty, value); }}/// <summary>/// 標(biāo)識 Title 依賴屬性。/// </summary>public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(MyPage), new PropertyMetadata(string.Empty));
如上述代碼所示,和CLR屬性不同依賴屬性需要定義TitleProperty ,然后在屬性包裝器(Getter和Setter)中通過GetValue和SetValue函數(shù)操作屬性值。
2. 使用的場景
UWP的依賴屬性經(jīng)過大幅簡化(相對于WPF),更關(guān)注它的核心功能:使用綁定,通過多個輸入計算屬性值,屬性值變化通知,節(jié)約內(nèi)存使用。
2.1 綁定
通過屬性包裝器,依賴屬性可以像CLR屬性那樣使用,也可以在XAML中通過綁定來使用,這是CLR屬性不能提供的功能。
在XAML中使用:
<TextBlock x:Name="TextElement" Text="{Binding Title}