共用方式為


HOW TO:實作相依性屬性

本範例示範如何使用 DependencyProperty 欄位支援 common language runtime (CLR) 屬性,藉以定義相依性屬性。 當您定義自己的屬性時,若想讓這些屬性支援 Windows Presentation Foundation (WPF) 功能的許多層面,包括樣式、資料繫結、繼承、動畫和預設值,您應該將它們實作成相依性屬性。

範例

下列範例首先會藉由呼叫 Register 方法來註冊相依性屬性。 用來儲存相依性屬性名稱和特性的識別項欄位,必須是您在呼叫 Register 時為相依性屬性選擇的 Name,再加上常值字串 Property。 例如,如果您使用 Name of Location 註冊相依性屬性,則您對相依性屬性定義的識別項欄位必須命名為 LocationProperty。

在這個範例中,相依性屬性及其 CLR 存取子 (Accessor) 的名稱是 State;識別項欄位是 StateProperty;屬性的型別是 Boolean;而註冊相依性屬性的型別則是 MyStateControl。

如果未遵照這個命名模式,設計工具可能無法正確回報您的屬性,而且屬性系統樣式應用程式的某些方面可能無法如預期般地運作。

您也可以指定相依性屬性的預設中繼資料 (Metadata)。 這個範例會將 State 相依性屬性的預設值註冊成 false。

  Public Class MyStateControl
      Inherits ButtonBase
    Public Sub New()
        MyBase.New()
    End Sub
    Public Property State() As Boolean
      Get
          Return CType(Me.GetValue(StateProperty), Boolean)
      End Get
      Set(ByVal value As Boolean)
          Me.SetValue(StateProperty, value)
      End Set
    End Property
    Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
  End Class
public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}

如需實作相依性屬性 (相對於只使用私用 (Private) 欄位支援 CLR 屬性) 之方式和原因的詳細資訊,請參閱相依性屬性概觀

請參閱

概念

相依性屬性概觀

其他資源

屬性 HOW TO 主題