Вызов к InitializeComponent()
(который обычно называют в конструкторе по умолчанию [по крайней мере 111] и 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
реализация в частичном сгенерированном классе.
Hope это помогает!
Рассмотрение кода всегда помогает также. Таким образом, можно на самом деле смотреть на сгенерированный частичный класс (который звонит LoadComponent) путем выполнения следующего:
YourClass.g.cs... является кодом для сгенерированного частичного класса. Снова при открытии этого, Вы видите метод InitializeComponent и как он называет LoadComponent... и многое другое.