1. 什么是附加屬性(attached property )
附加屬性依賴屬性的一種特殊形式,常見的Grid.Row,Canvas.Left都是附加屬性。
/// <summary>// 從指定元素獲取 Left 依賴項(xiàng)屬性的值。/// </summary>/// <param name="obj">The element from which the property value is read.</param>/// <returns>Left 依賴項(xiàng)屬性的值</returns>public static double GetLeft(DependencyObject obj){ return (double)obj.GetValue(LeftProperty);}/// <summary>/// 將 Left 依賴項(xiàng)屬性的值設(shè)置為指定元素。/// </summary>/// <param name="obj">The element on which to set the property value.</param>/// <param name="value">The property value to set.</param>public static void SetLeft(DependencyObject obj, double value){ obj.SetValue(LeftProperty, value);}/// <summary>/// 標(biāo)識(shí) Left 依賴項(xiàng)屬性。/// </summary>public static readonly DependencyProperty LeftProperty = DependencyProperty.RegisterAttached("Left", typeof(double), typeof(MyCanvas), new PropertyMetadata(0d));
附加屬性的簡(jiǎn)單定義如上述代碼所示。可以看出和依賴屬性不同的地方在于沒有作為屬性包裝器的Setter和Getter,而多了兩個(gè)靜態(tài)函數(shù)GetXXX和SetXXX。并且注冊(cè)標(biāo)識(shí)符使用DependencyProperty.RegisterAttached而不是DependencyProperty.Register。
2. 附加屬性有什么作用
和依賴屬性不同的地方在于,依賴屬性是依賴對(duì)象本身的屬性,附加屬性是附加在其他對(duì)象身上的屬性,通俗來說就是在別的對(duì)象內(nèi)插入自己的屬性。上面提到的Grid.Row,就是Grid將Row屬性附加到?jīng)]有Row屬性的其它類中,以便進(jìn)行布局。