مشاركة عبر


خصائص تحميل و تبعية XAML

الحالي WPF تطبيق به XAML بالأصل؛ يكون المعالج خاصية تبعية علم. "WPFXAML يستخدم المعالج أساليب النظام الخاصية خصائص تبعية عند تحميل الثنائي" XAML و معالجة سمات خصائص التبعية. هذا يتجاوز بشكل فعال خاصية مغلفة. عند تطبيق خصائص الاعتماد على العرف ، ويجب أن الحساب من أجل هذا السلوك ، وينبغي تجنب وضع أي رمز آخر في مجمع الممتلكات الخاصة بك وسائل أخرى غير نظام الملكية النظام أساليب GetValue و SetValue.

يشتمل هذا الموضوع على الأقسام التالية.

  • المتطلبات الأساسية
  • تطبيق أداة تحميل WPF XAML والأداء
  • الآثار المترتبة على خصائص التبعية مخصص
  • موضوعات ذات صلة

المتطلبات الأساسية

هذا الموضوع يفترض أن تفهم خصائص كل من التبعية والمستهلكين والكاتب وقراءة و نظرة عامة حول خصائص التبعية و خصائص التبعية المخصصة. يجب عليك أيضاً أن يكون لديك قراءة نظرة عامة على XAML (WPF) و بناء جملة XAML بالتفاصيل.

تطبيق أداة تحميل WPF XAML والأداء

لأسباب تطبيق وهو منع الإنشاء البرمجي لعمليتي إدخال مستقلتين أقل تكلفة لتعريف خاصية كـخاصية تبعية الوصول خاصية النظام SetValue أسلوب لتعيين أنه بدلاً من استخدام صواب المجمّع ثم setter الخاص به. وهذا لأن XAML يجب على المعالج الاستدلال على طراز الكائن بأكمله من التعليمات البرمجية النسخ تعتمد فقط على معرفة العلاقات عضو المشار إليها بواسطة بنية العلامات ثم سلاسل متنوعة.

يتم البحث عن النوع خلال تركيبة xmlns سمات التجميع ولكن يحدد أعضاء تحديد الذي قد يعتمد يتم تعيين كسمة وحلها ما يكتب دعم قيم خلاف ذلك تتطلب انعكاس شاملة باستخدام PropertyInfo. لأن خصائص تبعية على نوع محدد يمكن الوصول إليها كجدول تخزين عبر نظام الخاصية WPF تطبيق به XAML المعالج باستخدام الجدول و infers أن أي إعطاء الخاصية يمكن تعيين ABC بشكل أكثر كفاءة عن طريق استدعاء SetValue على الذي يحتوي على DependencyObject اشتقاق نوع باستخدام الخاصية التبعية خاصية ABC .

الآثار المترتبة على خصائص التبعية مخصص

لأن الحالي WPF تطبيق XAML سلوك المعالج تتجاوز الإعداد wrappers كلياً, يجب عدم وضع أي منطق تسلسل إضافية إلى تعريفات مجموعة برنامج التضمين لتبعية المخصصة صواب. إذا قمت بوضع مثل منطق في تعريف مجموعة ثم المنطق لن تنفيذها عند خاصية تعيين في XAML بدلاً من التعليمات البرمجية.

وبشكل مماثل، الأوجه الأخرى من XAML المعالج الحصول على خاصية القيم من XAML معالجة أيضاً استخدام GetValue بدلاً من استخدام برنامج التضمين. لذلك، يجب أيضاً تجنب أي تطبيق إضافية في get تعريف خارج GetValue المكالمة.

المثال التالي يتم تعريف خاصية تبعية مستحسنة wrappers حيث يتم تخزين معرف الخاصية كـ public static readonlyالحقل ، وe get أو setتعريفات تحتوي على أية تعليمات برمجية خارج أساليب النظام الخاصية الضرورية بتعريف تبعية الخاصية النسخ.


Public Shared ReadOnly AquariumGraphicProperty As DependencyProperty = DependencyProperty.Register("AquariumGraphic", GetType(Uri), GetType(AquariumObject), New FrameworkPropertyMetadata(Nothing, FrameworkPropertyMetadataOptions.AffectsRender, New PropertyChangedCallback(AddressOf OnUriChanged)))
Public Property AquariumGraphic() As Uri
    Get
        Return CType(GetValue(AquariumGraphicProperty), Uri)
    End Get
    Set(ByVal value As Uri)
        SetValue(AquariumGraphicProperty, value)
    End Set
End Property

public static readonly DependencyProperty AquariumGraphicProperty = DependencyProperty.Register(
  "AquariumGraphic",
  typeof(Uri),
  typeof(AquariumObject),
  new FrameworkPropertyMetadata(null,
      FrameworkPropertyMetadataOptions.AffectsRender, 
      new PropertyChangedCallback(OnUriChanged)
  )
);
public Uri AquariumGraphic
{
  get { return (Uri)GetValue(AquariumGraphicProperty); }
  set { SetValue(AquariumGraphicProperty, value); }
}

راجع أيضًا:

المبادئ

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

نظرة عامة على XAML (WPF)

الخاصية التبعية بيانات التعريف

خصائص تبعية مجموعة حسب النوع

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

أنماط الدوال الآمنة لـ DependencyObjects