WinUI 3 用の XAML ランタイム デザイン ツール

Visual Studioには、アプリの実行中に WinUI 3 XAML を設計、反復処理、検査できる一連のランタイム ツールが含まれています。 これらを組み合わせて使用すると、静的近似ではなく、実際の UI (実際のスタイル、実際のデータ テンプレート、実際のアニメーション) を示す高速な編集/再読み込み検査ループが提供されます。

Note

Visual Studio XAML デザイナー (ドラッグ アンド ドロップの [デザイン] タブ) では、現在 WinUI 3 プロジェクトはサポートされていません。 .xaml ファイルを開き、XML エディターのみが表示されている場合、インストールは中断されません。デザイナーは WinUI 3 では使用できません。 この機能リクエストは、Developer Community の WinUI 3 デスクトップ アプリ向けの XAML デザイナー サポートを追加 で追跡されています。 エンジニアリング作業の背景については、 WindowsAppSDK ディスカッション #4710 を参照してください。

この記事で説明するランタイム ツールは、デザイナーが使用可能かどうかに関係なく重要です。 この記事では、ワークフローについて説明します。

使用するもの

ツール それが何をするか 開く方法
XAML ホット リロード 再起動せずに実行中のアプリに XAML の変更をプッシュする 自動 — デバッグ中に .xaml ファイルを編集する
ライブ ビジュアル ツリー 完全なランタイム要素ツリーを表示し、アプリ内の要素を選択できます デバッグ>Windows>Live Visual Tree
Live プロパティ エクスプローラー 実行時に選択した要素のすべてのプロパティを表示および編集できます。 デバッグ>Windows>Live プロパティ エクスプローラー
XAML ライブ プレビュー ウィンドウを切り替えずに検査できるように、実行中のアプリをVisual Studio内にレンダリングします デバッグ>Windows>XAML Live Preview

Tip

ライブ ビジュアル ツリーと Live プロパティ エクスプローラーを並べてドッキングします。 これらを組み合わせることで、実際のランタイム値を示す詳細な検査ビューが提供されます。

Prerequisites

  • Visual Studio 2022 バージョン 17.0 以降 (XAML ホット リロードとライブ ビジュアル ツリーが含まれています)。
  • Windows アプリ SDKを使用する WinUI 3 プロジェクト。 WinUI 3 プロジェクトを作成して実行する方法を参照してください。
  • プロジェクトのターゲット.NET 6 以降 (C#) であるか、C++/WinRT を使用する必要があります。

手順 1: デバッガーでアプリを起動する

F5 (またはデバッグ>デバッグの開始) キーを押します。 XAML ホット リロードは、デバッガーがアタッチされると自動的にアクティブになります。

XAML ホット リロード ツール バーがアプリ内オーバーレイに表示されます。 表示されない場合は、設定が有効になっていることを確認します。

  1. Tools>Options>Debugging>XAML ホット リロードに移動します。
  2. [XAML ホット リロードを有効にする] がオンになっていることを確認します。

Important

XAML ホット リロードにはデバッガーが必要です。 デバッグなしで実行すると (Ctrl + F5 キーを押しながら)、ホット リロード、ライブ ビジュアル ツリー、および Live プロパティ エクスプローラーが無効になります。

手順 2: XAML を編集して変更をすぐに確認する

アプリを実行したら、エディターで任意の .xaml ファイルに切り替えて変更します。たとえば、 Background の色を変更したり、新しい Buttonを追加したりします。 実行中のアプリは、再起動せずに 1 秒または 2 秒以内に更新されます。

ホット リロードできることとできないこと

ホット リロードは、最も一般的な編集を処理します。

  • 要素の追加、削除、または並べ替え
  • プロパティ値の変更 (色、余白、テキスト、サイズ)
  • スタイルとリソース ディクショナリの追加または変更
  • データ テンプレートのコンテンツの変更

一部の変更には再起動が必要です。

  • 新しいクラス、コードビハインドのイベント ハンドラー、または x:Class の変更の追加
  • App.xaml マージされたディクショナリを変更する(場合によっては)
  • 新しいプロパティを参照する x:Bind 式を変更する

ホット リロード で変更を適用できない場合は、ツールバーに通知が表示されます。 これらの変更を取得するには、アプリを再起動するだけです。

詳細については、「XAML ホット リロード」を参照してください。

手順 3: ビジュアル ツリーとプロパティを調べる

ライブ ビジュアル ツリー ウィンドウ (デバッグ>Windows>Live ビジュアル ツリー) を開きます。 このウィンドウには、実行中のアプリの UI ツリー内のすべての要素が親子リレーションシップ別に表示されます。

要素を視覚的に選択する

  1. ライブ ビジュアル ツリー ツール バーで、実行中のアプリケーション (十字線ボタン) で [要素の選択] を有効にします。
  2. 実行中のアプリ内の任意の要素をクリックします。ツリーはその要素に移動し、 Live プロパティ エクスプローラー にそのプロパティが表示されます。

これは、コードで動的に作成された要素を含め、アプリがレンダリングする内容を正確に反映する点を除いて、デザインサーフェイス上の要素をクリックする場合と同等のランタイムです。

実行時にプロパティを編集する

Live プロパティ エクスプローラーでは、プロパティ値をリアルタイムで変更できます。 例えば次が挙げられます。

  • Marginを変更して間隔を調整し、効果をすぐに確認します。
  • VisibilityをCollapsedに設定して、要素が非表示になったときの動作をテストします。
  • WidthまたはHeightを調整して、レスポンシブ レイアウトをテストします。

これらのランタイム編集は XAML ファイルに保存されず、実験用です。 望みどおりの値が見つかったら、それらを .xaml ファイルに記述します(ここで ホット リロード がその値を検出し、永続的な設定にします)。

手順 4: XAML ライブ プレビューを使用する

XAML Live Preview では、実行中のアプリが Visual Studio タブ内にレンダリングされるため、ウィンドウを切り替えずにアプリと XAML ソースを並べて表示できます。

これを開くには、デバッグ>WindowsXAML ライブ プレビュー>します。

これは、アプリとVisual Studioの間の Alt-Tabbing が不便な単一モニターのセットアップで特に便利です。

詳細については、「 XAML Live Preview」を参照してください。

プロジェクトに専用の プレイグラウンド ページ を作成します。その唯一の目的は、コントロール、スタイル、レイアウトを試できるようにすることです。 これにより、常に視覚的な反復の準備ができているスクラッチパッドが提供され、上記のランタイム ツールと特によく組み合わせられます。

プレイグラウンドを設定する

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、[追加>新しいアイテム>テンプレート ページ (WinUI 3) を選択します。 UIPlayground.xaml と名前を付けます。

  2. UIPlayground.xamlで、試行するコントロールまたはパターンごとにセクションを含むScrollViewerを追加します。

    <Page
        x:Class="MyApp.UIPlayground"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <ScrollViewer Padding="24">
            <StackPanel Spacing="24">
    
                <!-- Section: Buttons -->
                <TextBlock Text="Buttons" Style="{StaticResource SubtitleTextBlockStyle}"/>
                <StackPanel Orientation="Horizontal" Spacing="8">
                    <Button Content="Standard"/>
                    <Button Content="Accent" Style="{StaticResource AccentButtonStyle}"/>
                    <ToggleButton Content="Toggle"/>
                    <HyperlinkButton Content="Link" NavigateUri="https://learn.microsoft.com"/>
                </StackPanel>
    
                <!-- Section: Text input -->
                <TextBlock Text="Text input" Style="{StaticResource SubtitleTextBlockStyle}"/>
                <TextBox PlaceholderText="Type here..." Width="300" HorizontalAlignment="Left"/>
                <PasswordBox PlaceholderText="Password" Width="300" HorizontalAlignment="Left"/>
    
                <!-- Add more sections as needed -->
    
            </StackPanel>
        </ScrollViewer>
    </Page>
    
  3. 遊び場に簡単にアクセスできます。 開発中に、 App.xaml.csのスタートアップ ページとして設定します。

    // In App.xaml.cs, OnLaunched method — swap in for quick playground access:
    // rootFrame.Navigate(typeof(UIPlayground));
    

    または、アプリで NavigationViewを使用している場合は、デバッグ ビルドにのみ表示されるメニュー項目を追加します。 たとえば、メイン ウィンドウのコードビハインドでは次のようになります。

    // In your main window or shell page constructor, after InitializeComponent():
    #if DEBUG
        NavView.MenuItems.Add(new NavigationViewItem
        {
            Content = "UI Playground",
            Tag = typeof(UIPlayground)
        });
    #endif
    

    ここで、NavViewはNavigationView コントロールのx:Nameです。

遊び場の使い方

  1. F5 キーを押してアプリを起動し、プレイグラウンド ページに移動します。
  2. 実行中のアプリと並べて .xaml ファイルを開きます (または XAML ライブ プレビューを使用します)。
  3. XAML エディターでコントロールを追加または変更する — ホット リロード により変更が即座に反映されます。
  4. ライブ ビジュアル ツリーを使用して、レンダリングされたコントロールをクリックし、Live プロパティ エクスプローラーで実際のレイアウト値を調べます。
  5. コントロールの外観に問題がなければ、XAML を実際のページにコピーします。

このパターンでは、"type-reload-inspect" サイクルが提供されます。実際のコードが実行されるため、実際のデータ テンプレート、実際のスタイル、および実際のアニメーションが表示されます。

デザイン時とランタイムのアプローチの比較

一般的な UI デザイン タスクがランタイム ツールにどのようにマップされるかを次に示します。

Task ランタイム ツール
ページにコントロールを追加する XAML 要素を入力する - IntelliSense によってタグと必要なプロパティが完了します
コントロールをプレビューする ホット リロードを使用して実行中のアプリでライブ表示する
検査する要素を選択する Live Visual Tree>Select Element (十字カーソル) を使用します
プロパティの表示または編集 Live プロパティ エクスプローラーを使用する
サイズまたは位置を調整する XAML または Live プロパティ エクスプローラーで Width、 Height、 Margin を編集する

効率的なワークフローのヒント

  • WinUI 3 ギャラリー アプリを使用します。 Microsoft Storeからインストールするか、GitHubからビルドします。 対話型の例とコピー可能な XAML を使用して、すべての WinUI 3 コントロールを示します。 XAML を記述する前に参照できるビジュアル カタログと考えてください。
  • 遊び場のページを開いたままにしておきます。 アプリのリビング スタイル ガイドのように扱います。
  • d:DesignHeightとd:DesignWidthを使用します。 デザイナーがなくても、これらの属性は IntelliSense に役立ち、エディターで開いたときにページのサイズを一貫したサイズに保ちます。
  • XAML バインディング エラー ウィンドウと組み合わせる。 デバッグ>>XAML バインディング エラーから開くと、デザイナーでは表示されないバインディング エラーを検出できます。
  • コミュニティ ツールキットを使用します。 Windows Community Toolkit には、手動でコードを記述するために必要なレイアウトの量を減らすコントロールとヘルパーが用意されています。