Visual Studio 2015の新機能「ライブビジュアルツリー」と「ライブプロパティエクスプローラー」を使い、UIコントロールのプロパティをデバッグ実行時に変更する方法を解説する。
対象:.NET 4.0以降、Visual Studio 2015以降
WPFのプログラムをデバッグしているとき、UIコントロールのプロパティを実行中に変更できたらよいのにと思ったことはないだろうか? 例えば、あるUIコントロールの位置を少し変えたいというとき、実行中に位置決めのパラメーターを変更できて、その結果をリアルタイムに見られたとしたら、どれだけ楽だろう。本稿では、それが可能になったVisual Studio 2015(以下、VS 2015)の新機能の使い方を紹介する。
VS 2015の数多くの新機能の中から本稿で紹介するのは、「ライブビジュアルツリー」(以降、「ライブツリー」と略す)と「ライブプロパティエクスプローラー」(以降、「ライブプロパティ」と略す)だ。これらは以前にはまとめて「Visual Diagnostics」と呼ばれていた機能である。この機能が使えるのは、WPFアプリとストアアプリだ*1。
このライブツリー/ライブプロパティは、VS 2015の全てのエディションで利用可能だ。本稿ではCommunityエディションを使って解説するが、Express for Windows DesktopエディションのWPFプロジェクトでもサポートされている。
*1 ライブツリー/ライブプロパティを利用できるプロジェクトと開発環境は、厳密には次の通りである(MSDN「Inspect XAML properties while debugging」より)。
慣れるまでは戸惑うかもしれない。デバッグ実行中にメニューバーの[デバッグ]から開くのである。
WPFのプロジェクトでデバッグ実行を開始したら、メニューバーから[デバッグ]−[ウィンドウ]−[ライブ ビジュアル ツリー]を選ぶとライブツリーのペインが表示される(次の画像)。同様にしてライブプロパティのペインも表示できる(後述するが、こちらはライブツリーからでも表示できる)。いったん表示したら、「ピン留め」しておくとよいだろう。そうしておいても、デバッグ終了時には表示されなくなる。
ライブツリーの初期状態は次の画像のようになっている。
ライブツリーの上端に7個のアイコンが並んでいる。それぞれの機能は次の通りだ(左から順に)。
アイコンの下には検索ボックスがあり、さらにその下にビジュアルツリーが表示される(初期状態では全て折りたたまれており、上の画像では[MainWindow]だけが見えている)。
ライブツリーで目的のコントロールを探すには、次のような方法がある。
選択モードをONにした状態では、実行中のプログラム上にマウスカーソルを持っていくと、カーソルの場所にあるコントロールの周囲に赤い点線で枠が付く。そこでクリックすると、そのコントロールがライブツリーで選択された状態になる(次の画像)。このときプレビューモードもONになっていると、ソースコードの該当箇所も表示される(XAMLコードで記述されているコントロールのみ)。
ライブツリーで目的のコントロールを選択した状態で、ライブプロパティでプロパティを変更すればよい。
ライブプロパティでプロパティを書き換えてから[Enter]キーを押すか、デバッグ実行中のプログラムを再びアクティブにすると、プロパティの変更が反映される。少々残念なことに、その変更をソースコードに反映させる手段は用意されていないようである。なお、ライブプロパティを表示していないときは、ライブツリーで目的のコントロールを右クリックしてコンテキストメニューから[プロパティの表示]を選べばよい(ライブプロパティが表示されて、右クリックしたコントロールのプロパティが表示される)。
例えば、TextBlockコントロールのテキストと色を変更すると次の画像のようになる。
ただし、既定値のままのプロパティはライブプロパティに表示されていない。そのようなプロパティを変更したいときは、ライブプロパティの[新規作成]ボタンを使ってプロパティを追加する(次の画像)。
既定値のままのプロパティを変更する例
VS 2015に搭載されたライブビジュアルツリー/ライブプロパティエクスプローラー機能は、実に強力だ。WPFプログラム(やストアアプリ、UWPアプリ)をデバッグ実行している最中に、UIコントロールのプロパティをその場で変更して画面の変化を確認できるのである。本稿ではデザイン画面でも確認できる例を紹介したが、デザイン画面ではうまく確認できないデータテンプレートなどではその威力をより発揮するだろう。
利用可能バージョン:.NET Framework 4.0以降
カテゴリ:Visual Studio 2015 処理対象:IDE
カテゴリ:WPF/XAML 処理対象:ツール
Copyright© Digital Advantage Corp. All Rights Reserved.