概要とリリース ノート: Windows UI ライブラリ 3 - Project Reunion 0.8 Preview (2021 年 5 月)

Windows UI ライブラリ (WinUI) 3 は、最新の Windows アプリのビルドに使用するネイティブのユーザー エクスペリエンス (UX) フレームワークです。 これは、Windows オペレーティング システムとは別に、Poject Reunion (現在は Windows App SDK と呼ばれています) の一部として出荷されます。 0.8 Preview リリースには、WinUI 3 ベースのユーザー インターフェイスを使用したアプリのビルドの開始に役立つ Visual Studio の WinUI 3 テンプレートが用意されています。

WinUI 3 - Project Reunion 0.8 Previewは、WinUI 3 のプレリリース バージョンで、バグ修正、全般的な機能強化、および試験的な機能が含まれています。その一部は、2021 年 6 月の Windows App SDK 0.8 安定リリースに向けて安定化される予定です。

重要

この Preview リリースは、早期評価と、開発者コミュニティからのフィードバックの収集を目的としています。 実稼働アプリには使用できません

Project Reunion と WinUI 3 を使用して実稼働アプリを提供する場合は、「概要とリリース ノート: WinUI 3 - Project Reunion 0.5」を参照してください。

WinUI GitHub リポジトリを使用して、フィードバックを提供し、提案と問題をログに記録してください。

Note

Project Reunion は、Windows App SDK の以前のコード名です。 このドキュメントでは、このコード ネームを使用した以前のリリースについて言及する際に、引き続き Project Reunion を使用しています。

WinUI 3 Project - Reunion 0.8 Preview のインストール

このバージョンの WinUI 3 は、Project Reunion 0.8 Preview の一部として入手できます。 インストールするには、次を参照してください。

Windows App SDK のプレビューおよび試験的チャネル用ツールをインストールする

WinUI は Project Reunion の一部として出荷されるので、作業を開始するには Project Reunion Visual Studio Extension (VSIX) をダウンロードします。これには、開発者用のツールとコンポーネントのセットが含まれています。 Project Reunion パッケージの詳細については、「Windows App SDK を使用するアプリを展開する」を参照してください。 Windows App SDK VSIX には、WinUI 3 アプリのビルドに使用する Visual Studio の WinUI 3 テンプレートが含まれています。

Note

WinUI 3 のコントロールと機能の動作を確認するには、GitHub から WinUI 3 コントロール ギャラリーを複製してビルドするか、Microsoft Store からダウンロードします。

開発環境を設定したら、Visual Studio の WinUI 3 テンプレートを参照して、使用可能な Visual studio プロジェクトと項目テンプレートについて理解してください。

WinUI 3 アプリのビルドの概要については、次の記事を参照してください。

制限と既知の問題を除くと、WinUI プロジェクトを使用したアプリの構築は、XAML と WinUI 2 を使用した UWP アプリの構築と似ています。 そのため、Windows SDK の UWP アプリと Windows.UI WinRT 名前空間のガイダンス ドキュメントのほとんどを適用できます。

WinUI 3 API リファレンス ドキュメントについては、WinUI 3 API リファレンスを参照してください

WebView2

この WinUI 3 リリースで WebView2 を使用するには、WebView2 ランタイムがまだインストールされていない場合は、こちらのページにある Evergreen Bootstrapper または Evergreen Standalone インストーラーをダウンロードしてください。

Windows Community Toolkit

Windows コミュニティ ツールキットを使用している場合は、最新バージョンをダウンロードしてください。

Visual Studio のサポート

ホット リロード、ライブ ビジュアル ツリー、ライブ プロパティ エクスプローラーなど、WinUI 3 に追加された最新のツール機能を利用するには、Visual Studio 2019 16.10 のプレビュー バージョンを使用する必要があります。 Visual Studio プレビュー リリースはプレリリース製品であるため、Visual Studio のプレビュー版を使用して WinUI 3 アプリをビルドするときにバグや制限事項が発生する可能性があることに注意してください。

次の表は、Visual Studio 2019 のバージョンと WinUI 3 - Project Reunion 0.5 の互換性を示したものです。

VS バージョン WinUI 3 - Project Reunion 0.5
16.8 いいえ
16.9 はい、ただし、ホット リロード、ライブ ビジュアル ツリー、ライブ プロパティ エクスプローラーは含まれません
16.10 プレビュー はい、すべての WinUI 3 ツール (プレビュー) が含まれます

既存の WinUI 3 アプリの更新

以前のプレビューまたは安定バージョンの WinUI 3 を使用してアプリを作成した場合は、WinUI 3 - Project Reunion 0.8 Preview を使用するようにプロジェクトを更新できます。 手順については、「既存のプロジェクトを最新リリースの Project Reunion に更新する」をご覧ください。

このリリースで導入される主な変更点

  • このリリースでは、ピボット コントロールを使用できるようになりました。
  • Project Reunion v0.5.5、v0.5.6、および v0.5.7 サービ スリリースからの重大なバグ修正の多くは、このリリースにも含まれています。 このプレビューに含まれていないサービス修正については、「既知の問題」をご覧ください。

WinUI 3 - Project Reunion 0.8 Preview で修正されるバグの一覧

  • カスタムの MenuFlyoutItem 内で x:Bind が機能しない (より一般的に言うと、親の名前スコープ内でも x:Bind が使用されている場合に、ControlTemplate 内の x:Bind が機能しない)

    • この問題を GitHub に提出してくださった @lhak に感謝します。
  • 最上位のウィンドウ (またはアイランド) が移動したときに、ウィンドウありのポップアップを非表示にする

  • WinUI 3 コントロール ギャラリーの StandardUICommand ページにすべての内容が表示されない

  • TextBox 内でマウスを右クリックすると、アプリケーションがクラッシュする

    • この問題を GitHub に提出してくださった @Herdubreid に感謝します。
  • EditableComboBox のコンテキスト メニューが間違った場所に表示される

  • RichTextBlock の選択をタッチで変更すると、選択インジケーターが消える

  • Microsoft C++ 例外: NavigationView が使用されている場合に、メモリ位置 0x... で winrt::hresult_error が発生する

    • この問題を GitHub に提出してくださった @LeftTwixWand さんに感謝します。
  • WinUI 3 エラー メッセージは次の内容に置き換える必要がある: "'Windows.metadata' を解決できません。 Windows ソフトウェア開発キットをインストールしてください。 Windows SDK は、Visual Studio と共にインストールされます。"

  • 例外を発生させるための VSM Setter のクワークに下位ロジックがある

    • この問題を GitHub に提出してくださった @HppZ さんに感謝します。
  • ブラウザー プロセスがクラッシュしたときに (必要に応じて) WebView2 にフォーカスを移動する

  • ProgressBar で一時停止とエラー オプションの違いが表示されない

    • この問題を GitHub に提出してくださった @j0shuams さんに感謝します。
  • PointerReplay が常に実行されている

  • NavigationView により、UWP でクラッシュが発生する (Reunion 0.5 Preview)

    • この問題を GitHub に提出してくださった @kalin-todorov に感謝します。
  • AutoSuggestBox、ComboBox、および CommandBarFlyout のポップアップで、ShouldConstrainToRootBounds="false" が設定されない

  • WinUI 3 - Project Reunion 0.5 で、C# マネージド アプリの C++ 例外が生成される

    • この問題を GitHub に提出してくださった @Noemata さんに感謝します。
  • WebView2 の初期タブ フォーカスが失われる

  • Close() の後に DPI が変更されると WebView2 がクラッシュする

  • WinUI3 の CommandBar で、Flyout を使った AppBarButton の外観が変更される

    • この問題を GitHub に提出してくださった @eleanorleffler さんに感謝します。

過去の WinUI 3 Preview で導入された新機能

次の機能は、過去の WinUI 3 プレビュー リリースで導入され、WinUI 3 - Project Reunion 0.8 Preview で引き続きサポートされます。

Note

次の機能の一部は、引き続き WinUI 3 プレビューに含まれますが、次のサポート リリースには含まれなくなる可能性があります。 これらの機能は試験段階としてマークされており、アプリで使用されると警告がスローされます。 このリリースでは、WinUI 2.6 プレリリースの一部である API も、試験段階としてマークされています。

  • WinUI を使用してデスクトップ アプリを作成する機能 (Win32 アプリ用の .NET を含む)
  • UWP アプリの作成に対するプレビューレベルのサポート
  • RadialGradientBrush
  • TabView の更新
  • ダーク テーマの更新
  • WebView2 の機能強化と更新
    • 高 DPI のサポート
    • ウィンドウのサイズ変更と移動のサポート
    • より新しいバージョンの Edge を対象とするよう更新されました
    • WebView2 固有の Nuget パッケージの参照が不要になりました
  • SwapChainPanel
  • MRT Core のサポート
    • これにより、スタートアップ時にアプリの速度と軽量化が向上し、リソース検索が迅速になります。
  • Arm64 のサポート
  • アプリの内部および外部でのドラッグ アンド ドロップ
  • RenderTargetBitmap (現時点では XAML コンテンツのみ - SwapChainPanel コンテンツなし)
  • カスタム カーソル サポート
  • オフスレッド入力
  • ツール/開発者エクスペリエンスの向上:
    • ライブ ビジュアル ツリー、ホット リロード、ライブ プロパティ エクスプローラー、および類似のツール
    • WinUI 3 用の IntelliSense
  • オープン ソースの移行に必要な機能強化
  • カスタム タイトル バー機能: 開発者がデスクトップ アプリでカスタム タイトル バーを作成できる新しい Window.ExtendsContentIntoTitleBar および Window.SetTitleBar API。
  • VirtualSurfaceImageSource のサポート
  • アプリ内アクリル
  • デスクトップ アプリでの複数ウィンドウのサポート
  • 入力の検証

フィードバックやご提案の送信

WinUI GitHub リポジトリにフィードバックをお寄せください。

制限事項と既知の問題

WinUI 3 - Project Reunion 0.8 Preview はまだプレビューです。 バグ、制限事項、およびその他の問題があることを想定してください。

次の項目は、WinUI 3 - Project Reunion 0.8 の既知のイシューの一部です。 以下に列挙していない問題が見つかった場合は、WinUI の GitHub リポジトリで、既存の問題に投稿するか、または新規の問題として投稿して、Microsoft にお知らせください。

プラットフォームと OS のサポート

WinUI 3 - Project Reunion 0.8 Preview は、Windows 10 October 2018 Update (バージョン 1809 - ビルド 17763) 以降を実行する PC と互換性があります。

開発者用ツール

  • C# および C++/WinRT アプリのみがサポートされています。
  • デスクトップ アプリは .NET 6 以降および C# 9 をサポートしており、MSIX アプリ内でパッケージ化する必要があります。
  • XAML デザイナーはサポートされていません。
  • 新しい C++/CX アプリはサポートされていませんが、既存のアプリは引き続き機能します (C++/WinRT にできるだけ早く移行してください)。
  • パッケージ化されていないデスクトップ展開はサポートされていません。
  • F5 キーを使用してデスクトップ アプリを実行する場合は、パッケージ プロジェクトを実行していることを確認してください。 アプリ プロジェクトで F5 キーを押すと、パッケージ化されていないアプリが実行されます。これは、WinUI 3 ではまだサポートされていません。

不足しているプラットフォーム機能

  • Xbox のサポート

  • HoloLens のサポート

  • ウィンドウありのポップアップ

    • 具体的には、プロパティの値に関係なく、ShouldConstrainToRootBounds プロパティは常に、true に設定されているかのように動作します。
  • インク サポート (以下を含む):

  • 背景アクリル

  • MediaElement および MediaPlayerElement

  • MapControl

  • SwapChainPanel は透明度をサポートしていません

  • AcrylicBrush、および CompositionBackdropBrush を使用したその他の効果で、SwapChainPanel または WebView2 からサンプルを取得することはできません。

  • グローバルな表示でフォールバック動作 (純色ブラシ) を使用します

  • 今回のリリースでは XAML Islands はサポートしていません

  • 既存の WinUI 以外のデスクトップ アプリで直接 WinUI 3 を使用すると、次のような制限があります。既存のアプリを移行するために現在使用できる方法は、ソリューションに新しい WinUI 3 プロジェクトを追加し、必要に応じてロジックを調整またはリファクタリングすることです。

  • Application.Suspending は、デスクトップ アプリでは呼び出されません。 詳細については、Application.Suspending イベントの API リファレンス ドキュメントを参照してください。

  • UISettings.ColorValuesChanged EventAccessibilitySettings.HighContrastChanged Event は、デスクトップ アプリでサポートされなくなります。 これにより、Windows テーマでの変更を検出するためにそれを使用している場合、問題が発生する可能性があります。

  • 以前は、CompositionCapabilities インスタンスを取得するには、CompositionCapabilites.GetForCurrentView() を呼び出していました。 しかし、この呼び出しから返される機能は、ビューに依存して "いませんでした"。 これを解決して反映するため、このリリースでは静的な GetForCurrentView () を削除したので、CompositionCapabilties オブジェクトを直接作成できるようになりました。

  • CoreWindow、ApplicationView、CoreApplicationView、CoreDispatcher、およびそれらの依存関係は、デスクトップ アプリではサポートされていません (下記参照)

デスクトップ アプリの CoreWindow、ApplicationView、CoreApplicationView、CoreDispatcher

WinUI 3 Preview 4 の新機能で今後は標準になる CoreWindowApplicationViewCoreApplicationViewCoreDispatcher、およびそれらの依存関係は、デスクトップ アプリでは使用できません。 たとえば、Window.Dispatcher プロパティは常に null ですが、Window.DispatcherQueue プロパティを代わりに使用できます。

これらの API は、UWP アプリでのみ機能します。 以前のプレビューでは、デスクトップ アプリでも部分的に機能していましたが、Preview 4 以降では完全に無効になっています。 これらの API は、スレッドごとにウィンドウが 1 つだけ存在する UWP の場合向けに設計されており、WinUI 3 の機能の 1 つは、複数を今後有効にすることです。

これらの API の存在に内部的に依存する API があり、そのためデスクトップ アプリではサポートされません。 通常、これらの API には静的な GetForCurrentView メソッドがあります。 たとえば、UIViewSettings.GetForCurrentView などです。

影響を受ける API の詳細、およびこれらの API の回避策と代替方法については、「デスクトップ アプリでサポートされていない Windows ランタイム API」を参照してください。

既知の問題

  • .NET SDK と winrt.runtime.dll のバージョンが一致しないことによるビルド エラーが発生することがあります。 回避策として、以下を試すことができます。

    .NET SDK を正しいバージョンに明示的に設定します。 アプリの正しいバージョンを確認するには、<TargetFramework> タグをプロジェクト ファイル内に配置します。 アプリが <TargetFramework> タグでターゲットとしている Windows SDK ビルド番号を使用して (18362、19041 など)、プロジェクト ファイルに次の項目グループを追加してから、プロジェクトを保存します。

    <ItemGroup>            
        <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.{Target Windows SDK Build Number}.16" />
        <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.{Target Windows SDK Build Number}.16" />
    </ItemGroup>
    

    この回避策は .NET SDK 5.0.203 以前には必要ですが、.NET SDK 5.0.204 または 5.0.300 には必要ないことに注意してください。

  • Visual Studio 2019 16.10 Preview 2 を使用した場合、ライブ ビジュアル ツリーでクラッシュが発生する可能性があります。 これを回避するには、最新の Visual Studio 2019 16.10 Preview に更新してください。

  • SetTitleBar が設定されていない場合、または null の場合、ウィンドウのキャプション ボタンが誤って配置される可能性がある

WinUI 3 - Project Reunion 0.8 Preview に含まれるすべてのコントロールと機能が含まれるサンプル アプリについては、「WinUI 3 コントロール ギャラリー (以前の「XAML コントロール ギャラリー - WinUI 3 バージョン」)」を参照してください。

WinUI 3 Controls Gallery app
WinUI 3.0 コントロール ギャラリー アプリの例

WinUI 3 コントロール ギャラリー アプリは、Microsoft Store を通じて入手できます。

GitHub リポジトリを複製して、サンプルをダウンロードすることもできます。 これを行うには、次のコマンドを使用して winui3 ブランチを複製します。

Note

この GitHub リポジトリには、WinUI 3 - Project Reunion 0.8 Preview を使用しているバージョンの WinUI 3 コントロール ギャラリーを提供する、winui3preview ブランチもあります。

git clone --single-branch --branch winui3 https://github.com/microsoft/Xaml-Controls-Gallery.git

複製した後、必ずローカルの Git 環境で winui3 ブランチに切り替えてください。

git checkout winui3

関連項目