مشاركة عبر


كيفية القيام بما يلي: إضافة نوع مالك إلى خاصية تبعية

يوضح هذا المثال كيفية إضافة فئة كمالك لخاصية تابعة مسجلة لنوع مختلف. بالقيام بذلك WPF XAML يكون القارئ و نظام الخاصية قادران على التعرف على الفئة كمالك إضافي للخاصية. الإضافة كمالك تسمح بشكل اختياري إضافة الفئة لتوفير بيانات التعريف الخاصة بنوعها.

في المثال التالي StateProperty هي خاصية مسجلة بواسطة فئة MyStateControl . فئة UnrelatedStateControl يضيف نفسه كمالك StateProperty باستخدام أسلوب AddOwner بشكل خاص استخدام التوقيع الذي يسمح ببيانات تعريف جديدة لخاصية التبعية كما هو موجوداً على نوع الإضافة. لاحظ أنه يجب توفير وقت تشغيل اللغة العامة (CLR) الموصلين لخاصية تشبه المثال المعروض في كيفية القيام بما يلي: تطبيق على خاصية التبعية المثال, بالإضافة إلى إعادة عرض معرف خاصية التبعية على الفئة المضافة كمالك.

بدون برامج تضمين, خاصية التبعية ستظل تعمل من منظور الاتصال المبرمج باستخدام GetValue أو SetValue. ولكنك تحتاج عادةً إلى موازاة سلوك نظام الخاصية هذا CLRخاصية برامج التضمين. تسهل برامج التضمين تعيين خاصية التبعية برمجياً و تجعل من الممكن تعيين الخصائص كـسمات XAML .

لمعرفة كيفية منع بيانات التعريف الافتراضية, راجع كيفية القيام بما يلي: تجاوز بيانات التعريف الخاصة بالخاصية التبعية.

مثال

  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
      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
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 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); }
  }
}

راجع أيضًا:

المبادئ

خصائص التبعية المخصصة

نظرة عامة حول خصائص التبعية