نظرة عامة حول مصادر الربط

في ربط البيانات، يشير كائن مصدر الربط إلى كائن الذي تحصل منه على البيانات. يناقش هذا الموضوع أنواع الكائنات التي يمكنك استخدامها كمصدر ربط.

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

  • أنواع مصدر الربط
  • تطبيق فئة لمصدر الربط
  • استخدام كائنات بأكملها لمصدر الربط
  • استخدام كائنات المجموعة كمصدر ربط
  • متطلبات الإذن في ربط البيانات
  • موضوعات ذات صلة

أنواع مصدر الربط

Windows Presentation Foundation (WPF)يدعم ربط البيانات أنواع مصدر الربط التالية:

مصدر الربط

الوصف

كائنات وقت تشغيل اللغة العامة (CLR)

يمكنك الربط الى الخصائص العمومية ، الخصائص الفرعية وكذلك المفهرسات من أي كائن وقت تشغيل اللغة العامة (CLR). يستخدم محرك الربط انعكاس CLR للحصول على قيم الخصائص. بدلاً من ذلك، الكائنات التي تقوم بتنفيذ ICustomTypeDescriptor أو لديها TypeDescriptionProvider المسجلة تعمل أيضاً على محرك الربط.

للحصول على مزيد من المعلومات حول كيفية تنفيذ فئة التى يمكن أن تخدم كمصدر ربط، راجع تنفيذ فئة لمصر الربط لاحقًا في هذا الموضوع.

كائنات ديناميكية

يمكنك يربط إلى الخصائص المتوفرة مفهرسات لكائن الذي يطبق في IDynamicMetaObjectProviderالواجهة. إذا كان يمكنك الوصول إلى العضو في التعليمات البرمجية يمكنك ربط اليه. على سبيل المثال، إذا تم تمكين كائن حيوي من الوصول إلى عضو في التعليمات البرمجية عبر someObjet.AProperty, يمكنك الربط اليه بواسطة تعيين مسار الربط الى AProperty.

كائنات ADO.NET

يمكنك الربط الى كائنات ADO.NET مثل DataTable. ADO.NET DataView يطبّق واجهة IBindingList التي توفر إعلامات التغيير التي يستمع اليها مشغل الربط.

كائنات XML

يمكنك الربط إلي و تشغيل XPath استعلامات على XmlNode ، XmlDocument, أو XmlElement. طريقة ملائمة للوصول إلي بيانات XML و هو أن مصدر ربط في العلامات يستخدم كائن XmlDataProvider. لمزيد من المعلومات، راجع كيفية القيام بما يلي: ربط بيانات XML باستخدام XMLDataProvider واستعلامات XPath.

يمكنك أيضاً الربط إلي XElement أو XDocument, أو الربط إلي نتائج الاستعلامات التي تعمل على كائنات من هذه الأنواع باستخدام LINQ إلي XML.إليإلي طريقة ملائمة باستخدام ‏‫مكون LINQ to XML للوصول إلى بيانات XML التي هو المصدر ربط في ترميز هو لاستخدام ObjectDataProviderالكائن. لمزيد من المعلومات، راجع كيفية القيام بما يلي: ربط XDocument ، XElement أو LINQ للحصول على نتائج استعلام XML.

كائنات DependencyObject

يمكنك الربط إلي الخصائص التبعية لأي DependencyObject. على سبيل المثال ، راجع كيفية القيام بما يلي: ربط خصائص عنصري تحكم.

تطبيق فئة لمصدر الربط

يمكنك إنشاء مصادر الربط الخاصة بك. هذا المقطع يتناول أشياء أنت بحاجة لمعرفتها ما إذا كنت تتطبق فئة للخدمة كمصدر ربط.

توفير إعلامات التغيير

إذا كنت تستخدم إما ربط OneWay أو TwoWay (لأنك ترغب في تحديث واجهة المستخدم الخاص بك عند تغيير خصائص مصدر الربط بشكل حيوي) ، يجب تطبيق آلية إعلام تغيير الخاصية مناسبة . الآلية الموصى بها هي من أجل CLR أو الفئة الحيوية لتطبيق واجهة INotifyPropertyChanged. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تطبيق إعلام تغيير الخاصية.

إذا قمت بإنشاء كائن CLR الذي لا يقوم بتطبيق INotifyPropertyChanged ، ثم يجب الترتيب لنظام الإعلام الخاص بك على أن يتأكد من البيانات المستخدمة في الربط تظل الحالية. يمكنك توفير إعلامات التغيير بواسطة دعم نمط PropertyChanged لكل خاصية تريد إعلامات تغيير لها. لدعم هذا النمط، قم بتعريف حدث تغيير PropertyNameلكل خاصية حيث PropertyName هو اسم الخاصية. تقوم برفع الحدث كل مرة تتغير الخاصية.

إذا كان مصدر الربط يطبّق أحد آليات الإعلام, تحديث الهدف يحدث تلقائياً. إذا كان لأي سبب لا يوفر مصدر الربط الخاص بك إعلامات تغيير الخاصية المناسب, يكون لك الخيار لاستخدام أسلوب UpdateTarget لتحديث خاصية الهدف بشكل صريح.

الصفات المميزة الأخرى

توفر القائمة التالية نقاط هامة أخرى يجب ملاحظتها:

  • إذا كنت تريد إنشاء الكائن في XAML ، يجب أن يكون للفئة منشئ افتراضي. في بعض لغات .NET، مثل #C ، يمكن أن يتم إنشاء مُنشئ افتراضي لك.

  • الخصائص التي تستخدمها كخصائص مصر الربط للربط يجب أن تكون خصائص عمومية من الفئة الخاصة بك. خصائص الواجهة المعرفة بوضوح لا يمكن الوصول إليها من أجل أغراض الربط ولا يمكن أيضاً للخصائص المحمية, الخاصة ، الداخلية أو الظاهرية التي لا تحتوي على تطبيق القاعدة.

  • لا يمكنك الربط إلي الحقول العامة.

  • نوع الخاصية الموضح في الفئة الخاصة بك هو النوع الذي يتم تمريره إلى الربط. ومع ذلك، يعتمد نوع المستخدم في النهاية بواسطة الربط يعتمد على نوع خاصية هدف الربط، ليست تلك التابعة لخاصية مصدر الربط. في حالة الاختلاف في النوع قد تحتاج إلى كتابة محول لمعالجة كيفية تمرير الخاصية المخصصة الخاصة بك صواب إلى الربط أول مرة. لمزيد من المعلومات، راجع IValueConverter.

استخدام كائنات بأكملها لمصدر الربط

يمكنك استخدام كائن بأكمله كمصدر ربط. يمكنك تحديد مصدر الربط بواسطة استخدام خاصية Source أو DataContext، ثم توفر تعريف ربط فارغ: {Binding}. وحدات السيناريو في أي ترتيب هو هو مفيدة تضمين ربط كائنات من نوع السلسلة، وربط الكائنات التي تحتوي على العديد من الخصائص التي تهمك، أو رابط لمجموعة الكائنات. لحصول على مثال حول الربط إلي كائن مجموعة كاملة ، راجع كيفية القيام بما يلي: استخدام نمط رئيسي تفصيلي مع البيانات ذات التسلسل الهرمي.

يجب ملاحظة أنك قد تحتاج إلى تطبيق منطق مخصص بحيث يكون للبيانات معنى منضم بخاصية الهدف . قد يكون المنطق المخصص في نموذج محول مخصص (إذا كان تحويل النوع افتراضيا غير موجود) أو DataTemplate. لمزيد من المعلومات حول المحولات راجع مقطع تحويل البيانات من نظرة عامة لربط البيانات. للحصول على مزيد من المعلومات حول قوالب البيانات ، راجع نظرة عامة حول قولبة البيانات.

استخدام كائنات المجموعة كمصدر ربط

غالباً ما يكون الكائن الذي تريد استخدامه كمصدر ربط هو عبارة عن مجموعة من الكائنات المخصصة. يخدم كل كائن كمصدر من مثيل واحد من الربط المتكرر. على سبيل المثال، قد يكون لديك مجموعة CustomerOrders التي تتكون من كائنات CustomerOrder حيث التطبيق الخاص بك يتكرر عبر المجموعة لتحديد عدد الطلبات موجودة و البيانات المضمنة في كل منهم.

يمكن الإضافة إلى أي مجموعة تقوم بتنفيذ واجهة IEnumerable . ومع ذلك، لإعداد ارتباطات حيوية بحيث عمليات الإدراج أو الحذف في المجموعة تقوم بتحديث واجهة المستخدم تلقائياً, يجب أن تقوم المجموعة بتنفيذ واجهة INotifyCollectionChanged . هذه الواجهة تقوم بالكشف عن أحد الأحداث التي يجب أن يتم تشغيلها عند تغير المجموعة الأساسية.

فئة ObservableCollection<T> هي تطبيق مضمن لتجميع البيانات الذي يعرض واجهة INotifyCollectionChanged. كائنات البيانات الفردية في المجموعة يجب أن تحقق المتطلبات الموضحة في المقاطع السابقة. على سبيل المثال ، راجع كيفية القيام بما يلي: إنشاء و الربط إلى ObservableCollection. قبل تطبيق المجموعة الخاصة بك، يمكنك استخدام ObservableCollection<T> أو أحد فئات المجموعة الموجودة مثل List<T> ، Collection<T> ، و BindingList<T> ، بين العديد من الآخرين.

WPF لا يربط مباشرة إلى مجموعة. إذا حددت مجموعة كمصدر ربط, WPF فعلياً يقوم بالربط إلي طريقة العرض الافتراضية للمجموعة. للحصول على معلومات حول طرق العرض الافتراضية, راجع نظرة عامة لربط البيانات.

إذا كان لديك سيناريو متقدم وتريد إلى تطبيق المجموعة الخاصة بك، فمن الأفضل استخدام IListالواجهة. IListتوفر مجموعة غير عام من الكائنات التي يمكن الوصول إليها على حدة بواسطة الفهرس، مما يؤدي إلى تحسين الأداء.

متطلبات الإذن في ربط البيانات

عند ربط البيانات، يجب مراعاة مستوى الثقة للتطبيق. يلخص الجدول التالي أي أنواع خاصية قد ترتبط في التطبيق الذي ينفذ في ثقة كاملة أو ثقة جزئية:

نوع الخاصية

(كافة معدّلات الوصول)

خاصية كائن حيوي

خاصية كائن حيوي

خاصية CLR

خاصية CLR

خاصية تبعية

خاصية تبعية

مستوى الثقة

ثقة تامة

ثقة جزئية

ثقة تامة

ثقة جزئية

ثقة تامة

ثقة جزئية

فئة عامة

نعم

نعم

نعم

نعم

نعم

نعم

فئة غير عامة

نعم

لا

نعم

لا

نعم

نعم

يصف هذا الجدول النقاط الهامة التالية حول متطلبات الإذن في ربط البيانات:

  • لخصائص CLR، يعمل ربط البيانات طالما كان مشغّل الربط قادراً على الوصول إلى خاصية مصدر الربط باستخدام الانعكاس. غير ذلك، مشغّل الربط يقوم بنشر تحذير أن الخاصية لا يمكن العثور عليها و يستخدم القيمة البديلة أو القيمة الافتراضية إذا كان ذلك متوفراً.

  • يمكنك الربط إلي الخصائص على الكائنات الحيوية التي تم تعريفها في وقت الترجمة أو وقت التشغيل.

  • يمكنك دوماً الربط إلي الخصائص التبعية .

متطلبات إذن لربط XML مشابه. في آلية تحديد صلاحيات الثقة الجزئية, XmlDataProvider يفشل عندما لا يكون هناك أذونات للوصول إلى البيانات المحددة.

كائنات مع نوع مجهول تكون داخلية. يمكنك الربط إلي خصائص من أنواع مجهولة فقط عند تشغيل في وضع الثقة الكاملة. للحصول على مزيد من المعلومات عن الأنواع المجهولة, راجع أنواع مجهول (C# البرمجة الدليل) أو أنواع مجهول (Visual Basic).

لمزيد من المعلومات حول أمان الثقة الجزئية, راجع الأمان ذا الثقة الجزئية الخاص بWPF.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحديد مصدر الربط

المرجع

ObjectDataProvider

XmlDataProvider

المبادئ

نظرة عامة لربط البيانات

WPF Data Binding with LINQ to XML Overview

أمثلية الأداء: ربط البيانات.

موارد أخرى

المواضيع الإجرائية لربط البيانات