Megosztás a következőn keresztül:


Útmutató: Tulajdonostípus hozzáadása függőségi tulajdonsághoz

Ez a példa bemutatja, hogyan adhat hozzá osztályt egy másik típushoz regisztrált függőségi tulajdonság tulajdonosaként. Ezzel a WPF XAML olvasó és a tulajdonságrendszer képes felismerni az osztályt a tulajdonság további tulajdonosaként. A tulajdonosként való hozzáadás lehetővé teszi, hogy az osztály típusspecifikus metaadatokat adjon meg.

Az alábbi példában StateProperty az MyStateControl osztály által regisztrált tulajdonság. Az UnrelatedStateControl osztály tulajdonosként adja hozzá magát a StateProperty-hez a AddOwner metódussal, különösen oly módon, ahogy az aláírás lehetővé teszi a függőségi tulajdonság új metaadatainak megadását az arra vonatkozó típusban. Figyelje meg, hogy a tulajdonsághoz a Függőségi tulajdonság implementálása példához hasonló közös nyelvi futtatókörnyezeti (CLR) kiegészítőt kell megadnia, valamint újra közzé kell tennie a függőségi tulajdonság azonosítóját a tulajdonosként hozzáadott osztályon.

Burkoló nélkül a függőségi tulajdonság továbbra is a programozott hozzáférés szempontjából működne GetValue vagy SetValuehasználatával. Ezt a tulajdonságrendszer-viselkedést azonban általában a CLR-tulajdonságburkolókkal szeretné párhuzamosan használni. A burkolók megkönnyítik a függőségi tulajdonság programozott beállítását, és lehetővé teszik a tulajdonságok XAML-attribútumként való beállítását.

Az alapértelmezett metaadatok felülbírálásához lásd: Függőségi tulajdonság metaadatainak felülbírálása.

példa

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));
}
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 UnrelatedStateControl : Control
{
  public UnrelatedStateControl() { }
  public static readonly DependencyProperty StateProperty = MyStateControl.StateProperty.AddOwner(typeof(UnrelatedStateControl), new PropertyMetadata(true));
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); }
  }
}
Public Class UnrelatedStateControl
    Inherits Control
  Public Sub New()
  End Sub
  Public Shared ReadOnly StateProperty As DependencyProperty = MyStateControl.StateProperty.AddOwner(GetType(UnrelatedStateControl), New PropertyMetadata(True))
  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
End Class

Lásd még