Ne yapar InitializeComponent()
yapmak ve WPF nasıl çalışır?
Genel olarak, ama özellikle inşaat sırasının kanlı ayrıntılarını ve Ekli Özellikler olduğunda ne olacağını bilmek isterim.
Ne yapar InitializeComponent()
yapmak ve WPF nasıl çalışır?
Genel olarak, ama özellikle inşaat sırasının kanlı ayrıntılarını ve Ekli Özellikler olduğunda ne olacağını bilmek isterim.
Yanıtlar:
Çağrı InitializeComponent()
(genellikle, en azından varsayılan oluşturucu denir Window
ve UserControl
) gerçekten kontrol (yerine ilk tahmin olarak hedef hiyerarşi kadar bir çağrı) kısmi sınıf için bir yöntem çağrıdır.
Bu yöntem , yüklenen Window
/ için XAML'ye bir URI bulur UserControl
ve System.Windows.Application.LoadComponent()
statik yönteme iletir. LoadComponent()
iletilen URI'da bulunan XAML dosyasını yükler ve XAML dosyasının kök öğesi tarafından belirtilen nesnenin bir örneğine dönüştürür.
Daha ayrıntılı olarak, LoadComponent
bir örneğini oluşturur XamlParser
ve XAML'nin bir ağacını oluşturur. Her düğüm XamlParser.ProcessXamlNode()
. Bu BamlRecordWriter
sınıfa geçer. Bundan bir süre sonra BAML'in nesnelere nasıl dönüştürüldüğü konusunda biraz kayboluyorum, ama bu aydınlanma yolunda size yardımcı olmak için yeterli olabilir.
Not: İlginç bir şekilde, bu arabirimde, kısmen oluşturulan sınıfta uygulanan / uygulanan InitializeComponent
bir yöntemdir .System.Windows.Markup.IComponentConnector
Window
UserControl
Bu yardımcı olur umarım!
Koda bakmak her zaman yardımcı olur. Yani, aşağıdakileri yaparak oluşturulan kısmi sınıfa ( LoadComponent'i çağıran ) bir göz atabilirsiniz :
YourClass .g.cs ... oluşturulan kısmi sınıf için kodudur. Yine, bunu açarsanız InitializeComponent yöntemini ve LoadComponent'i nasıl çağırdığını ... ve çok daha fazlasını görebilirsiniz.