WinUI 3 は、最新の Windows アプリを構築するためのネイティブ ユーザー エクスペリエンス (UX) フレームワークです。 Project Reunion (現在は Windows アプリ SDK と呼ばれる) の一部として、Windows オペレーティング システムとは別に出荷されます。 0.8 プレビュー リリースでは、 Visual Studio で WinUI 3 テンプレート が提供され、WinUI 3 ベースのユーザー インターフェイスを使用してアプリの構築を開始できます。
WinUI 3 - Project Reunion 0.8 Preview は、バグ修正、一般的な機能強化、試験的機能を含む WinUI 3 のプレリリース バージョンです。その一部は、2021 年 6 月の Windows アプリ SDK 0.8 安定版リリースで安定します。
Important
このプレビュー リリースは、早期評価と開発者コミュニティからのフィードバックの収集を目的としています。 実稼働アプリには使用できません。
Project Reunion と WinUI 3 を使用して運用アプリを出荷する場合は、「 概要とリリース ノート: WinUI 3 - Project Reunion 0.5」を参照してください。
WinUI GitHub リポジトリを使用して、フィードバックとログの提案と問題を提供してください。
注
Project Reunion は、 Windows アプリ SDK の以前のコード名です。 このドキュメントでは、このコード名を使用した以前のリリースを参照するときに、 Project Reunion を引き続き使用します。
WinUI 3 のインストール - Project Reunion 0.8 プレビュー
このバージョンの WinUI 3 は、Project Reunion 0.8 プレビューの一部として使用できます。 インストールするには、次を参照してください。
Windows アプリ SDK のプレビュー チャネルと試験的チャネル用のツールをインストールする
WinUI は Project Reunion の一部として提供されているため、Project Reunion Visual Studio 拡張機能 (VSIX) をダウンロードして開始します。これには、一連の開発者ツールとコンポーネントが含まれています。 Project Reunion パッケージの詳細については、「 Windows アプリ SDK を使用するアプリをデプロイする」を参照してください。 Windows アプリ SDK VSIX には、 WinUI アプリのビルドに使用する Visual Studio の WinUI 3 テンプレートが含まれています。
注
WinUI 3 のコントロールと機能の動作を確認するには、GitHubから WinUI 3 ギャラリーを複製してビルドするか、Microsoft Storeからダウンロードします。
開発環境を設定したら、 Visual Studio の WinUI 3 テンプレートを 参照して、使用可能な Visual Studio プロジェクトテンプレートと項目テンプレートについて理解します。
WinUI アプリの構築の概要の詳細については、次の記事を参照してください。
制限事項や既知の問題とは別に、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 スタンドアロン インストーラーをダウンロードしてください。
Windows Community Toolkit
Windows Community Toolkit を使用している場合は、 最新バージョンをダウンロードします。
Visual Studio のサポート
ホット リロード、ライブ ビジュアル ツリー、ライブ プロパティ エクスプローラーなど、WinUI 3 に追加された最新のツール機能を利用するには、Visual Studio 2019 16.10 のプレビュー バージョンを使用する必要があります。 Visual Studio プレビュー リリースはプレリリース製品であるため、プレビュー バージョンの Visual Studio を使用して WinUI アプリをビルドするときに、バグや制限事項が発生する可能性があることに注意してください。
次の表は、Visual Studio 2019 バージョンと WinUI 3 - Project Reunion 0.5 の互換性を示しています。
| VS バージョン | WinUI 3 - Project Reunion 0.5 |
|---|---|
| 16.8 | いいえ |
| 16.9 | はい。ただし、ホット リロード、ライブ ビジュアル ツリー、または Live プロパティ エクスプローラーはありません |
| 16.10 プレビュー | はい。すべての WinUI 3 ツール (プレビュー段階) |
既存の WinUI アプリの更新
以前のプレビューバージョンまたは安定バージョンの WinUI 3 でアプリを作成した場合は、WinUI 3 - Project Reunion 0.8 プレビューを使用するようにプロジェクトを更新できます。 手順については、「 Project Reunion の最新リリースに既存のプロジェクトを更新する」を参照してください。
このリリースで導入された主な変更
- ピボット コントロールは、このリリースで使用できるようになりました。
- Project Reunion v0.5.5、v0.5.6、および v0.5.7 サービス リリースの重要なバグ修正のほとんどは、このリリースにも含まれています。 このプレビューに含まれていないサービス修正については、「 既知の問題」を参照してください。
WinUI 3 で修正されたバグの一覧 - Project Reunion 0.8 Preview
x:Bind はカスタム MenuFlyoutItem では機能しません (一般的には、親の名前スコープで x:Bind も使用されている場合、ControlTemplate の x:Bind は機能しません)
トップレベル ウィンドウ (またはアイランド) の移動時にウィンドウ表示されたポップアップを非表示にする
WinUI 3 ギャラリーの StandardUICommand ページにすべてが表示されない
TextBox 内でマウスを右クリックすると、アプリケーションがクラッシュする
EditableComboBox の間違った場所に表示されるコンテキスト メニュー
タッチで RichTextBlock の選択を変更すると、選択インジケーターが消えます
Microsoft C++ 例外: NavigationView が使用されている場合に、メモリ位置 0x... で winrt::hresult_error が発生する
WinUI 3 のエラー メッセージは再構成が必要です: "'Windows.metadata' を解決できません。" Windows ソフトウェア開発キットをインストールしてください。 Windows SDK は Visual Studio と共にインストールされています。
例外を発生させるための VSM Setter のクワークに下位ロジックがある
ブラウザー プロセスがクラッシュしたときに、WebView2 からフォーカスを移動する (必要な場合)
ProgressBar で一時停止とエラー オプションの違いが表示されない
PointerReplay が常に実行されている
NavigationView により、UWP でクラッシュが発生する (Reunion 0.5 Preview)
AutoSuggestBox、ComboBox、CommandBarFlyout がポップアップで ShouldConstrainToRootBounds="false" を設定していない
WinUI 3 - C# マネージド アプリの C++ 例外を生成する Project Reunion 0.5
WebView2 の初期タブ フォーカスが失われた
Close() の後に DPI が変更されると、WebView2 がクラッシュする
WinUI3 の CommandBar において Flyout を伴う AppBarButton の外観の変更
過去の WinUI 3 プレビューで導入された機能
次の機能は、過去の WinUI 3 プレビュー リリースで導入され、WinUI 3 - Project Reunion 0.8 プレビューで引き続きサポートされています。
注
次の機能の一部は WinUI 3 プレビューの一部であり続けますが、次にサポートされるリリースには含まれていない可能性があります。 これらの機能は実験的機能としてマークされ、アプリで使用すると警告が表示されます。 UWP 2.6 プレリリースの WinUI の一部である API も、このリリースでは試験段階としてマークされています。
- Win32 アプリ用 .NET など、WinUI でデスクトップ アプリを作成する機能
- UWP アプリのビルドに関するプレビュー レベルのサポート
- RadialGradientBrush
- TabView の更新
- ダーク テーマの更新
-
WebView2 の機能強化と更新
- 高 DPI のサポート
- ウィンドウのサイズ変更と移動のサポート
- より新しいバージョンの Edge をターゲットに更新
- WebView2 固有の Nuget パッケージを参照する必要がなくなりました
- SwapChainPanel
- MRT Core のサポート
- これにより、起動時にアプリが高速かつ軽量になり、リソースの検索が迅速になります。
- Arm64 のサポート
- アプリの内側と外側をドラッグ アンド ドロップする
- RenderTargetBitmap (現在は XAML コンテンツのみ - SwapChainPanel コンテンツなし)
- カスタム カーソルのサポート
- スレッド以外の入力
- ツール/開発者エクスペリエンスの改善:
- ライブ ビジュアル ツリー、ホット リロード、ライブ プロパティ エクスプローラーなどのツール
- WinUI 3 の Intellisense
- オープン ソースの移行に必要な機能強化
- カスタム タイトル バー機能: 開発者がデスクトップ アプリでカスタム タイトル バーを作成できるようにする新しい Window.ExtendsContentIntoTitleBar API と Window.SetTitleBar API。
- VirtualSurfaceImageSource のサポート
- アプリ内アクリル
- デスクトップ アプリでのマルチウィンドウ のサポート
- 入力の検証
フィードバックと提案を提供する
WinUI GitHub リポジトリでのフィードバックをお待ちしております。
制限事項と既知の問題
WinUI 3 - Project Reunion 0.8 プレビューは、プレビューにすぎません。 バグ、制限事項、その他の問題を想定してください。
WinUI 3 - Project Reunion 0.8 に関する既知の問題の一部を次に示します。 以下に記載されていない問題が見つかる場合は、既存の問題に投稿するか、 WinUI GitHub リポジトリを使用して新しい問題を提出して、お知らせください。
プラットフォームと 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 は透明度をサポートしていません
CompositionBackdropBrush を使用した AcrylicBrush やその他の効果は、SwapChainPanel または WebView2 からサンプリングできません。
グローバル表示では、ソリッド ブラシを使用するフォールバック動作が採用されています。
XAML Islands は、このリリースではサポートされていません
WinUI 以外の既存のデスクトップ アプリで WinUI 3 を直接使用するには、次の制限があります。既存のアプリを移行するために現在使用できるパスは、 新しい WinUI 3 プロジェクトをソリューションに追加し、必要に応じてロジックを調整またはリファクタリングすることです。
Application.Suspending はデスクトップ アプリでは呼び出されません。 詳細については、 Application.Suspending イベント に関する API リファレンス ドキュメントを参照してください。
UISettings.ColorValuesChanged イベントと AccessibilitySettings.HighContrastChanged イベントは、デスクトップ アプリではサポートされなくなりました。 これを使用して Windows テーマの変更を検出すると、問題が発生する可能性があります。
以前は、CompositionCapabilities インスタンスを取得するには 、CompositionCapabilites.GetForCurrentView()を呼び出します。 ただし、この呼び出しから返される機能は、ビューに依存 していません 。 この問題に対処して反映するために、このリリースでは GetForCurrentView() 静的なオブジェクトが削除されているため、 CompositionCapabilties オブジェクトを直接作成できるようになりました。
CoreWindow、ApplicationView、CoreApplicationView、CoreDispatcher とその依存関係は、デスクトップ アプリではサポートされていません (下記参照)
デスクトップ アプリの CoreWindow、ApplicationView、CoreApplicationView、CoreDispatcher
WinUI 3 Preview 4 の新機能であり、今後の標準、 CoreWindow、 ApplicationView、 CoreApplicationViewCoreDispatcher、およびその依存関係はデスクトップ アプリでは使用できません。 たとえば、 Window.Dispatcher プロパティは常に null ですが、 Window.DispatcherQueue プロパティは代替として使用できます。
これらの API は、UWP アプリでのみ機能します。 過去のプレビューでは、デスクトップ アプリでも部分的に機能しましたが、プレビュー 4 以降は完全に無効になっています。 これらの API は、スレッドごとにウィンドウが 1 つしかない UWP ケース用に設計されており、WinUI 3 の機能の 1 つは、今後複数のウィンドウを有効にすることです。
これらの API の存在に内部的に依存する API があり、その結果、デスクトップ アプリではサポートされません。 これらの API には、一般に静的な GetForCurrentView メソッドがあります。 たとえば 、UIViewSettings.GetForCurrentView です。
影響を受ける API の詳細、およびこれらの API の回避策と置換については、 デスクトップ アプリでの WinRT API のサポートを参照してください。
既知の問題
.NET SDK と winrt.runtime.dllのバージョンが一致しないため、ビルド エラーが発生する可能性があります。 回避策として、次の方法を試すことができます。
.NET SDK を正しいバージョンに明示的に設定します。 アプリの正しいバージョンを確認するには、プロジェクト ファイルで
<TargetFramework>タグを見つけます。 アプリがターゲットとしている Windows SDK ビルド番号を<TargetFramework>タグ (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 プレビューに更新します。
SetTitleBar が設定されていないか null の場合、ウィンドウ キャプション ボタンが正しく配置されない可能性がある
WinUI 3 ギャラリーのスナップショット
winui3ブランチとwinui3preview ブランチは使用できなくなり、XAML コントロール ギャラリー リポジトリの名前が microsoft/WinUI-Gallery に変更されました。 Project Reunion 0.8 Preview 用に更新されたサンプル アプリは、履歴コミットに保持されます。 このスナップショットでは、Project Reunion 0.8.0-preview が使用され、現在の WinUI 3 ギャラリーは反映されません。
履歴スナップショットをダウンロードするには、リポジトリを複製し、保存されたコミットをチェックアウトします。
git clone https://github.com/microsoft/WinUI-Gallery.git
cd WinUI-Gallery
git fetch origin refs/pull/698/head
git checkout 77d9e0a68bb67edb2b79fd1535fb18cf438b4265
こちらも参照ください
Windows developer