Apa yang InitializeComponent()
dilakukan, dan bagaimana cara kerjanya di WPF?
Secara umum pertama, tapi saya terutama akan tertarik untuk mengetahui detail berdarah dari urutan konstruksi, dan apa yang terjadi ketika ada Properti Terlampir.
Apa yang InitializeComponent()
dilakukan, dan bagaimana cara kerjanya di WPF?
Secara umum pertama, tapi saya terutama akan tertarik untuk mengetahui detail berdarah dari urutan konstruksi, dan apa yang terjadi ketika ada Properti Terlampir.
Jawaban:
Panggilan ke InitializeComponent()
(yang biasanya dipanggil dalam konstruktor default setidaknya Window
dan UserControl
) sebenarnya adalah pemanggilan metode ke kelas parsial dari kontrol (daripada memanggil hierarki objek seperti yang saya harapkan pertama kali).
Metode ini menempatkan URI ke XAML untuk Window
/ UserControl
yang memuat, dan meneruskannya ke System.Windows.Application.LoadComponent()
metode statis. LoadComponent()
memuat file XAML yang terletak di lulus dalam URI, dan mengubahnya menjadi turunan dari objek yang ditentukan oleh elemen root dari file XAML.
Secara lebih rinci, LoadComponent
membuat instance dari XamlParser
, dan membangun pohon XAML. Setiap node diuraikan oleh XamlParser.ProcessXamlNode()
. Ini diteruskan ke BamlRecordWriter
kelas. Beberapa waktu setelah ini saya agak bingung bagaimana BAML dikonversi menjadi objek, tetapi ini mungkin cukup untuk membantu Anda di jalan menuju pencerahan.
Catatan: Menariknya, InitializeComponent
ini adalah metode pada System.Windows.Markup.IComponentConnector
antarmuka, yang diimplementasikan Window
/ UserControl
di kelas parsial yang dihasilkan.
Semoga ini membantu!
Melihat kode juga selalu membantu. Artinya, Anda dapat melihat kelas parsial yang dihasilkan (yang memanggil LoadComponent ) dengan melakukan hal berikut:
The YourClass .g.cs ... adalah kode untuk kelas parsial yang dihasilkan. Sekali lagi, jika Anda membukanya, Anda dapat melihat metode InitializeComponent dan bagaimana ia memanggil LoadComponent ... dan banyak lagi.