方法 : 大きな XAML ファイルを処理する
XAML は、複雑なデータ構造を表すことができます。 そのため、XAML ファイルが非常に大きくなることがあります。 たとえば、ベクター イメージを表現する XAML は数 MB のサイズに達する可能性があります。 大きな XAML ファイルは、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] の [テキスト エディター] オプションで [常に完全な XAML ビューでドキュメントを開く] オプションをオンにします。 詳細については、「[書式設定] ([オプション] ダイアログ ボックス - [テキスト フォルダー] - [XAML])」を参照してください。
次に XAML ファイルを開いたときに、XAML ビューのみでファイルが表示されます。
XAML ファイルをソース コード エディターで開くには
ソリューション エクスプローラーで、開く XAML ファイルを右クリックします。
ショートカット メニューの [ファイルを開くアプリケーションの選択] をクリックします。
[ファイルを開くアプリケーションの選択] ダイアログ ボックスで、[ソース コード (テキスト) エディター] をクリックし、[OK] をクリックします。
XAML ファイルがコード エディターで開きます。
デザイン ビュー
デザイン ビューを使用して XAML のラージ ブロックを操作することはできますが、パフォーマンス上の問題が発生することがあります。 パフォーマンスを向上させるためのヒントを次に示します。
XAML のラージ ブロックをデザイン ビューで操作するときのパフォーマンスを向上させるには
XAML のラージ ブロックを独立した UserControl に移動します。 この方法では、パフォーマンスの低下を最小限に抑えて、大きな XAML ファイルをデザイン画面に追加できます。
XAML のラージ ブロックを XAML リソース ファイルに移動します。 このリソース ファイルをカスタム コントロールに関連付けた場合、大きな XAML ファイルはカスタム コントロールがデザイナーに開かれたときにのみ読み込まれます。
XAML を再構築して、XAML のラージ ブロックに含まれる更新を最小化します。
次のコード例は、イメージを表す XAML のラージ ブロックが含まれる Canvas 要素を示しています。 兄弟ボタン コントロールの 1 つが変更されると、親グリッドとすべての子が更新されます。 XAML のラージ ブロックを使用してこの Canvas 要素を更新すると、パフォーマンスが低下します。
<Window x:Class="WpfApplication1.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="300" Width="300"> <Grid> <Canvas> <!-- Many paths describing an image. --> </Canvas> <Button /> <Button /> <Button /> </Grid> </Window>
次のコードは、パフォーマンスの問題を回避するため、前の例で示した XAML を再構築する方法を示しています。
<Window x:Class="WpfApplication2.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="300" Width="300"> <Grid> <Canvas> <!-- Many paths describing an image. --> </Canvas> <Grid> <Button /> <Button /> <Button /> </Grid> </Grid> </Window>
ボタン コントロールは、Canvas 要素の兄弟ではなくなりました。ボタンの 1 つが変更されても、Canvas 要素は更新されません。
参照
参照
[書式設定] ([オプション] ダイアログ ボックス - [テキスト フォルダー] - [XAML])
概念
WPF および Silverlight デザイナー読み込みエラーのトラブルシューティング