4

UserControls を作成すると、コントロールが初期化されるたびに XAML が解析されているように見えます。

たとえば、UserControl を作成すると、次のようなコンポーネントを初期化するコードが自動生成されます。

public void InitializeComponent()
{
    if (_contentLoaded)
        return;

    _contentLoaded = true;
    global::Windows.UI.Xaml.Application.LoadComponent(this, new global::System.Uri("ms-appx:///Views/MyView.xaml"), global::Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);

}

これは Silverlight にもありました。

コントロールを 1 回または 2 回作成することは大したことではありませんが、各 UserControl に Visual-States とバインディングを備えた大きなビジュアル ツリーがあり、アプリケーションのライフサイクルごとに何度も作成する場合は、ビジュアルを構築することは理にかなっています。 C# を使用して制御し、パフォーマンスを向上させます。

だから、私の質問は:

パーサー/フレームワークは XAML ファイルを「記憶」し、後続の呼び出しで再解析を回避しますか? つまり、XAML のバイナリ表現を作成するので、テキストを何度も読み取る必要はありませんか?

4

2 に答える 2

0

XAML は、アプリケーション内のリソースとしてバイナリ形式にコンパイルされると理解しています。ランタイムは、.cs コード ファイルを解析する必要がないのと同様に、.xaml ファイルのテキストを解析する必要はありません。

XAML で宣言されているようにクラスをインスタンス化するパフォーマンスは、コードで作成する場合と同等であると想定されています。

于 2012-11-21T01:10:55.830 に答える