InitializeComponent()
は何をし、WPFではどのように機能しますか?
一般的に最初に、しかし、私は特に建設の順序の厄介な詳細、および添付プロパティがあるときに何が起こるかを知りたいと思います。
InitializeComponent()
(通常、少なくともWindow
およびUserControl
のデフォルトコンストラクターで呼び出される)への呼び出しは、実際には(呼び出しではなく)コントロールの部分クラスへのメソッド呼び出しです。私が最初に期待したオブジェクト階層)。
このメソッドは、ロード中のWindow
/UserControl
のXAMLへのURIを見つけ、System.Windows.Application.LoadComponent()
静的メソッドに渡します。 LoadComponent()
は、渡されたURIにあるXAMLファイルをロードし、XAMLファイルのルート要素で指定されたオブジェクトのインスタンスに変換します。
より詳細には、LoadComponent
はXamlParser
のインスタンスを作成し、XAMLのツリーを構築します。各ノードは、XamlParser.ProcessXamlNode()
によって解析されます。これはBamlRecordWriter
クラスに渡されます。この後しばらくすると、BAMLをオブジェクトに変換する方法が少し失われますが、これでEnlightenmentへの道を進めるのに十分かもしれません。
注:興味深いことに、InitializeComponent
はSystem.Windows.Markup.IComponentConnector
インターフェイスのメソッドであり、そのWindow
/UserControl
は部分的に生成されたクラスに実装されます。
お役に立てれば!
コードを見ることも常に役立ちます。つまり、以下を実行することで、実際に生成された部分クラス(LoadComponentを呼び出す)を確認できます。
YourClass。g.cs ...は、生成された部分クラスのコードです。繰り返しますが、これを開くと、InitializeComponentメソッドと、LoadComponent ...などの呼び出し方法を確認できます。