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