L'appel à l' InitializeComponent()
(ce qui est généralement appelée dans le constructeur par défaut d'au moins Window
et UserControl
) est en fait un appel de méthode à la classe partielle de la commande (plutôt que d'un appel de la hiérarchie de l'objet que j'ai d'abord attendu).
Cette méthode permet de localiser un URI pour le XAML de la Window
/UserControl
qui est en cours de chargement, et le transmet à l' System.Windows.Application.LoadComponent()
méthode statique. LoadComponent()
des charges le fichier XAML qui est situé à l'adopté dans l'URI, et la convertit en une instance de l'objet qui est spécifié par l'élément racine du fichier XAML.
Plus en détail, LoadComponent
crée une instance de l' XamlParser
, et construit un arbre de la XAML. Chaque nœud est analysé par l' XamlParser.ProcessXamlNode()
. Cela se passait à l' BamlRecordWriter
classe. Quelques temps après je me suis un peu perdu dans la façon dont le BAML est convertie à des objets, mais cela peut être suffisant pour vous aider sur le chemin de l'éveil.
Remarque: il est Intéressant de noter, l' InitializeComponent
est une méthode de l' System.Windows.Markup.IComponentConnector
d'interface, dont Window
/UserControl
mettre en œuvre dans l'partielle de la classe générée.
Espérons que cette aide!