Frage

Was bedeutet InitializeComponent() tun, und wie es in WPF funktioniert?

In der Regel zuerst, aber ich würde vor allem interessiert die blutigen Details der Ordnung der Konstruktion zu wissen, und was passiert, wenn es Eigenschaften angebracht ist.

War es hilfreich?

Lösung

Der Aufruf von InitializeComponent() tatsächlich einen Methodenaufruf wird an der Teilklasse der Kontrolle (die in der Regel in dem Standard-Konstruktor von mindestens Window und UserControl genannt wird) (eher als ein Aufruf der Objekthierarchie wie ich zuerst erwartet).

Dieses Verfahren findet eine URI zum XAML für die Window / UserControl, die geladen wird, und übergibt sie an die System.Windows.Application.LoadComponent() statische Methode. LoadComponent() lädt die XAML-Datei, die an dem übergebenen URI angeordnet ist, und wandelt sie in eine Instanz des Objekts, das durch das Wurzelelement der XAML-Datei angegeben ist.

Im Detail schafft LoadComponent eine Instanz der XamlParser, und baut einen Baum der XAML. Jeder Knoten wird durch den XamlParser.ProcessXamlNode() geparst. Dies wird auf die BamlRecordWriter-Klasse übergeben. Einige Zeit nach diesem ich ein bisschen erhalten verloren, wie die BAML auf Objekte umgewandelt wird, aber dies kann ausreichen, Sie auf dem Weg zu helfen, zur Erleuchtung.

. Hinweis: Interessanterweise ist die InitializeComponent ist ein Verfahren auf der System.Windows.Markup.IComponentConnector Schnittstelle, von denen Window / UserControl in der Teil generierte Klasse implementieren

Hope, das hilft!

Andere Tipps

Mit Blick auf den Code immer auch hilft. Das heißt, man kann tatsächlich einen Blick auf die erzeugte partielle Klasse nehmen (die Anrufe Loadcomponent ), indem Sie wie folgt vor:

  1. Gehen Sie zur Lösung Explorer-Fenster in der Visual Studio-Lösung, die Sie interessieren.
  2. Es gibt eine Schaltfläche in der Werkzeugleiste des Solution Explorer ‚Alle Dateien anzeigen‘ betitelt. Schalten Sie diese Taste.
  3. Nun, erweitern Sie die obj Ordner und dann die Debug oder Freigabe Ordner (oder was auch immer Konfiguration Sie bauen) und Sie werden sehen, ein Datei mit dem Titel Yourclass .g.cs.

Die Yourclass .g.cs ... ist der Code für generierte Teilklasse. wenn Sie wieder, dass sich öffnen können Sie die Methode InitializeComponent sehen und wie es ruft Loadcomponent ... und vieles mehr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top