L'appel à InitializeComponent()
(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 (au lieu d'un appel dans la hiérarchie de l'objet comme je premier attendu) .
Cette méthode localise une adresse URI vers le code XAML pour le Window
/UserControl
en cours de chargement et la transmet à la méthode statique System.Windows.Application.LoadComponent()
. LoadComponent()
charge le fichier XAML situé à l'adresse URI transmise et le convertit en une instance de l'objet spécifié par l'élément racine du fichier XAML.
Plus en détail, LoadComponent
crée une instance du XamlParser
et génère un arbre du code XAML. Chaque nœud est analysé par le XamlParser.ProcessXamlNode()
. Ceci est passé à la classe BamlRecordWriter
. Quelque temps après cela, je me perds un peu dans la façon dont le BAML est converti en objets, mais cela peut suffire à vous aider sur le chemin de l'illumination.
Note: Il est intéressant de la InitializeComponent
est un procédé à l'interface System.Windows.Markup.IComponentConnector
dont Window
/UserControl
mettre en œuvre dans la classe générée partielle.
Espérons que cela aide!
Merci, je pense que ce sont de très bonnes réponses ci-dessous! Personne n'a mentionné les AttachedProperties exactement, mais maintenant je sais que toutes les AttachedProperties dans Xaml sont juste créées dans le cadre de l'analyse Xaml, donc elles ne méritent pas vraiment une mention spéciale. –