1. ホーム
  2. c#

[解決済み] InitializeComponent()は何をし、WPFでどのように動作するのですか?

2022-04-24 08:35:03

質問

とは何ですか? InitializeComponent() また、WPFではどのように動作するのでしょうか?

まず一般的なことですが、特に構築の順番や、Attached Propertiesがある場合にどうなるかなど、細かいところまで教えていただきたいです。

解決方法は?

の呼び出しは InitializeComponent() (のデフォルトコンストラクタで呼び出されます)。 WindowUserControl は、実際にはコントロールの部分クラスへのメソッド呼び出しです(私が最初に予想したようなオブジェクト階層の呼び出しではありません)。

このメソッドは Window / UserControl をロードし、それを System.Windows.Application.LoadComponent() 静的メソッドです。 LoadComponent() 渡されたURIにあるXAMLファイルをロードし、XAMLファイルのルート要素で指定されたオブジェクトのインスタンスに変換します。

具体的には LoadComponent のインスタンスを作成します。 XamlParser で、XAML のツリーを構築します。各ノードは XamlParser.ProcessXamlNode() . これは BamlRecordWriter クラスがあります。この後しばらく、BAMLがどのようにオブジェクトに変換されるかについて少し迷いますが、これはあなたが悟りを開くのに十分な助けになるかもしれません。

注:興味深いことに InitializeComponentSystem.Windows.Markup.IComponentConnector インターフェイスで、そのうちの Window / UserControl を部分的に生成されたクラスで実装します。

お役に立てれば幸いです。