方法 : 大きな XAML ファイルを処理する

更新 : 2007 年 11 月

XAML は、複雑なデータ構造を表すことができます。そのため、XAML ファイルが非常に大きくなることがあります。たとえば、ベクタ イメージを表現する XAML は数 MB のサイズに達する可能性があります。大きな XAML ファイルは、Windows Presentation Foundation (WPF) Designer for Visual Studio のパフォーマンスを低下させる要因になります。次に説明する手順は、XAML のラージ ブロックに起因するパフォーマンスの問題に対処するのに役立ちます。

XAML ビューのみ

大きな XAML ファイルを Visual Studio で操作するときのパフォーマンスを向上させる最適な方法は、WPF デザイナ でデザイン ビューを使用しないことです。Visual Studio でデザイン ビューを使用しないで XAML を編集する方法は、次の 2 つです。

最初の方法では、デザイン ビューを無効にし、XAML ビューだけを使用します。[テキスト エディタ] オプションを変更して、XAML ファイルが完全な XAML ビューのみで開くように指定できます。この方法を使うことで、XAML のすべての編集機能、[ドキュメント アウトライン] ウィンドウ、およびタグ ナビゲータを利用できます。

2 番目の方法では、ソース コード エディタを使用します。[ファイルを開くアプリケーションの選択] ダイアログ ボックスを使用して、XAML ファイルをソース コード エディタで開くことができます。これは最も軽量な方法であり、大きな XAML ファイルの場合に最適なパフォーマンスを提供します。XAML の編集機能はすべて利用できますが、[ドキュメント アウトライン] ウィンドウとタグ ナビゲータは利用できません。

XAML を完全な XAML ビューに開くには

XAML ファイルをソース コード エディタで開くには

  1. ソリューション エクスプローラで、開く XAML ファイルを右クリックします。

  2. ショートカット メニューの [ファイルを開くアプリケーションの選択] をクリックします。

  3. [ファイルを開くアプリケーションの選択] ダイアログ ボックスで、[ソース コード (テキスト) エディタ] をクリックし、[OK] をクリックします。

    XAML ファイルがコード エディタで開きます。

デザイン ビュー

デザイン ビューを使用して XAML のラージ ブロックを操作することはできますが、パフォーマンス上の問題が発生することがあります。パフォーマンスを向上させるためのヒントを次に示します。

XAML のラージ ブロックをデザイン ビューで操作するときのパフォーマンスを向上させるには

  • XAML のラージ ブロックを独立した UserControl に移動します。この方法では、パフォーマンスの低下を最小限に抑えて、大きな XAML ファイルをデザイン画面に追加できます。

  • XAML のラージ ブロックを XAML リソース ファイルに移動します。このリソース ファイルをカスタム コントロールに関連付けた場合、大きな XAML ファイルはカスタム コントロールがデザイナに開かれたときにのみ読み込まれます。

  • XAML を再構築して、XAML のラージ ブロックに含まれる更新を最小化します。

    次のコード例は、イメージを表す XAML のラージ ブロックが含まれる Canvas 要素を示しています。兄弟ボタン コントロールの 1 つが変更されると、親グリッドとすべての子が更新されます。XAML のラージ ブロックを使用してこの Canvas 要素を更新すると、パフォーマンスが低下します。

    <Window x:Class="WpfApplication1.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
            <Button />
            <Button />
            <Button />
        </Grid>
    </Window>
    

    次のコードは、パフォーマンスの問題を回避するため、前の例で示した XAML を再構築する方法を示しています。

    <Window x:Class="WpfApplication2.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
    
            <Grid>
                <Button />
                <Button />
                <Button />
            </Grid>
        </Grid>
    </Window>
    

    ボタン コントロールは、Canvas 要素の兄弟ではなくなりました。ボタンの 1 つが変更されても、Canvas 要素は更新されません。

参照

概念

WPF デザイナ読み込みエラーのトラブルシューティング

参照

[書式設定] ([オプション] ダイアログ ボックス - [テキスト エディタ] - [XAML])

その他の技術情報

WPF デザイナの XAML とコード

WPF デザイナでのエラーのデバッグと解釈