سؤال

ماذا InitializeComponent() لا, و كيف يعمل في WPF?

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

هل كانت مفيدة؟

المحلول

والدعوة إلى InitializeComponent() (وهو ما يسمى عادة في منشئ الافتراضي Window وUserControl على الأقل) هو في الواقع استدعاء الأسلوب إلى فئة جزئية من سيطرة (بدلا من مكالمة أعلى التسلسل الهرمي الكائن كما كنت أتوقع أولا).

وهذه الطريقة يقع على URI إلى XAML لWindow / UserControl أن يتم تحميل، ويمررها إلى أسلوب ثابت System.Windows.Application.LoadComponent(). LoadComponent() تحميل ملف XAML الذي يقع في صدر في URI، ويحوله إلى مثيل الكائن الذي تم تعيينه من قبل العنصر الجذر لملف XAML.

في مزيد من التفاصيل، LoadComponent إنشاء مثيل من XamlParser، ويبني شجرة XAML. يتم تحليل كل عقدة من XamlParser.ProcessXamlNode(). هذا يحصل تمريرها إلى الدرجة BamlRecordWriter. بعض الوقت بعد ذلك يمكنني الحصول على بعض الشيء المفقود في كيفية تحويل BAML إلى الأشياء، ولكن هذا قد يكون كافيا لمساعدتك على طريق التنوير.

ملحوظة: ومن المثير للاهتمام، وInitializeComponent هو أسلوب على واجهة System.Windows.Markup.IComponentConnector، منها Window / UserControl تنفيذها في الفئة التي تم إنشاؤها جزئية

وآمل أن يساعد هذا!

نصائح أخرى

ابحث في التعليمات البرمجية دائما يساعد أيضا.هذا هو في الواقع يمكنك إلقاء نظرة على إنشاء فئة جزئية (أن المكالمات LoadComponent) من خلال القيام بما يلي:

  1. انتقل إلى مستكشف الحلول جزء في Visual Studio الحل الذي كنت مهتما في.
  2. هناك زر في شريط الأدوات من "مستكشف الحلول" بعنوان 'إظهار كافة الملفات'.تبديل هذا الزر.
  3. الآن توسيع الكائنات مجلد ثم التصحيح أو الإصدار المجلد (أو أيا كان التكوين الذي يتم بناء) وسوف ترى ملف بعنوان YourClass.ز.cs.

على YourClass.ز.cs ...هو رمز ولدت فئة جزئية.مرة أخرى, إذا قمت بفتح هذا يمكنك أن ترى الأسلوب InitializeComponent وكيف يدعو LoadComponent ...وأكثر من ذلك بكثير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top