La llamada a InitializeComponent()
(que generalmente se llama en el constructor predeterminado de al menos Window
y UserControl
) es en realidad una llamada de método a la clase parcial del control (en lugar de una llamada hasta la jerarquía de objetos como primera esperaba) .
Este método localiza un URI en el XAML para el Window
/UserControl
que se está cargando, y lo pasa al método estático System.Windows.Application.LoadComponent()
. LoadComponent()
carga el archivo XAML que se encuentra en el URI pasado, y lo convierte en una instancia del objeto que se especifica mediante el elemento raíz del archivo XAML.
Con más detalle, LoadComponent
crea una instancia del XamlParser
y crea un árbol del XAML. Cada nodo es analizado por XamlParser.ProcessXamlNode()
. Esto se pasa a la clase BamlRecordWriter
. Algún tiempo después de esto me pierdo un poco en cómo el BAML se convierte en objetos, pero esto puede ser suficiente para ayudarte en el camino hacia la iluminación.
Nota: Curiosamente, el InitializeComponent
es un método en la interfaz System.Windows.Markup.IComponentConnector
, de los cuales Window
/UserControl
implementar en la clase generada parcial.
Espero que esto ayude!
Gracias, creo que estas son muy buenas respuestas a continuación! Nadie mencionó exactamente las propiedades adjuntas, pero ahora sé que cualquier propiedad adjunta en Xaml se acaba de crear como parte del análisis Xaml, por lo que realmente no merecen una mención especial. –