Windows アプリ SDK 1.4 の安定版チャネル リリース ノート
安定チャネルでは、運用環境のアプリによる使用がサポートされている Windows App SDK のリリースが提供されます。 Windows App SDK の安定リリースが使用されるアプリは、Microsoft Store に発行することもできます。
重要なリンク:
- 既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。
最新の安定版チャネル リリース ノート:
Windows App SDK 用のダウンロード
Note
Windows アプリ SDK Visual Studio 拡張機能(VSIX)は、現在は個別のダウンロードとして配布されていません。 それらは、Visual Studio内のVisual Studio Marketplaceで利用可能です。
バージョン 1.4.7 (1.4.240802001)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- メイン ウィンドウよりも高い、または広い
ShouldConstrainToRootBounds="false"
ポップアップ内にある場合に、ItemsRepeater
で十分な項目が生成されない問題を修正しました。 AnnotatedScrollBar
ラベルの更新が保留中の場合に、シャットダウン時にクラッシュする可能性がある問題を修正しました。
バージョン 1.4.6 (1.4.240512000)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- 入力の処理中にクラッシュする可能性がある問題を修正しました。
- 別のアプリからドラッグ アンド ドロップ操作を開始すると、コピー/移動/リンクの正しいドロップ操作が許可されない問題を修正しました。
- デバッグ用の WinUI ソース サーバー情報が microsoft-ui-xaml GitHub リポジトリを正しくポイントするように修正しました。
- GitHub の問題 #8857 の修正に関する問題を修正し、ライブラリの
resources.pri
がアプリのresources.pri
に適切にマージされるようにしました。
バージョン 1.4.5 (1.4.240211001)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- マウス ホイールでスクロール中にマウス ボタンをクリックするとアプリケーションがハングするという問題を修正しました。 詳細については、GitHub の問題 #9233 を参照してください。
- NuGet パッケージのチェーンを参照するときにアセットが重複するという問題を修正しました。 詳細については、GitHub の問題 #8857 を参照してください。
- メモリ リーク、省略記号メニューが空のときに生じるクラッシュ、ウィンドウ内で誤って制約されている省略記号メニューなど、
BreadcrumbBar
の問題をいくつか修正しました。 - グラフィックス リソースを解放するとシャットダウン時にクラッシュする可能性があるという問題を修正しました。
バージョン1.4.4 (1.4.231219000)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- WinUI 3 診断のセキュリティの問題を修正しました。
- タッチでアクティブ化したときにパスワードボックスにスクリーンキーボードが表示されない入力の問題を修正しました。 詳細については、GitHub issue #8947 を参照してください。
Microsoft.UI.Xaml.Controls.dll
ファイルのサイズが予期せず大きくなる問題を修正しました。- フォーカスの設定時にクラッシュする可能性があった
CommandBarFlyout
の問題を修正しました。 - .NET 8 RID 固有の資産処理に対する Windows App SDK のサポートを更新しました。
- 一部のスワップチェーンが正しく配置または引き伸ばされない問題を修正しました。
バージョン 1.4.3 (1.4.231115000)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- メニューが背景なしで短時間表示される場合がある問題を修正しました。
- 特定のマルチモニター シナリオで発生する可能性のあるクラッシュを修正しました。
- コンテキスト メニューが画面外に表示される場合がある問題を修正しました。
- ウィンドウ スタイルと動作の最大化に関する問題を修正しました。 詳細については、GitHub issue #8996 を参照してください。
- フォーカスが別のコントロールから予期せず取得されるアイランドに関する問題を修正しました。
NavigationView
のタブの順序に関する問題を修正しました。- 白色のバーがタイトルバーの上部に表示される場合があるレンダリングの問題を修正しました。 詳細については、GitHub issue #8947 を参照してください。
- さまざまなパフォーマンスの修正。
バージョン 1.4.2 (1.4.231008000)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- メモリとオブジェクトの過剰な割り当てが原因で explorer.exe でクラッシュする問題を修正しました。
- [戻る] ボタンが正常に動作しなくなるタイトル バーの操作の問題を修正しました。
- ソース ファイルが複数回含まれている場合に警告が生成される原因となった問題を修正しました。
- コンテキスト メニューのパフォーマンスに影響する問題を修正しました。
- ターゲットの .exe が WindowsApps フォルダー内のパッケージの同じ場所を常に指していた .lnk ショートカットの問題を修正しました。
- 一部のフォントでインド語のテキストの適切なレンダリングに影響する DWriteCore の問題を修正しました。
- リスト ビューで、入れ子になった選択項目との Tab/Shift + Tab キーを使った適切なキーボード ナビゲーションが行われない問題を修正しました。
- コンボボックスを 2 回目に展開した後、タッチ操作でコンボボックス項目をスクロールできなくなる問題を修正しました。 詳細については、GitHub issue #8831 を参照してください。
- 一部の言語で WinAppSDK パッケージに WinUI のローカライズされたリソースが含まれていなかった問題を修正しました。
- エクスプローラーと XAML でユーザーの優先する言語が表示される方法の不整合を修正しました。
- エクスプローラーで、アクティブなタブの下に細い線が表示される技術的な問題を修正しました。
- フレームワークが提供するキーボード アクセラレータの一部が適切にローカライズされていない問題を修正しました。 詳細については、GitHub issue #2023 を参照してください。
- タップ時に繰り返しスクロールする RepeatButton コントロールの問題を修正しました。
- WinAppSDK インストーラー .exe を適切なリソース バージョン情報に修正しました。
バージョン 1.4.1 (1.4.230913002)
これは、1.4 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- 最初のフレームまでの時間を改善するためにパフォーマンスの問題を修正しました。
- メニューが
RequestedTheme
に従っていなかった問題を修正しました。 たとえば、この問題により、白い背景に白いテキストが表示される可能性がありました。 詳細については、GitHub イシュー #8756 を参照してください。 - 一部のメニューでアクリルの背景が完全に透明になる場合がある問題を修正しました。
- XAML により、Windows でデスクトップの壁紙が不必要に再描画される場合がある問題を修正しました。
ListView
とGridView
のTabNavigation = Local
とTabNavigation = Cycle
のサポートを修正しました。これにより、方向キーに加えて、TAB キーを使用してヘッダーと項目の間を移動できるようになりました。- ツールヒントを閉じたときのいくつかの煩雑な例外を修正しました。 詳細については、GitHub イシュー #8699 を参照してください。
バージョン 1.4 の新機能と更新された機能および既知の問題
以降のセクションでは、バージョン 1.4 の新機能と更新された機能、既知の問題について説明します。
既存の Windows App SDK 1.3 アプリでは、Nuget パッケージを 1.4.230822000 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio にパッケージをインストールして管理する」の「パッケージを更新する」セクションを参照)。
更新されたランタイムと MSIX については、「最新の Windows アプリ SDK ダウンロード」を参照してください。
カスタム タイトル バーと AppWindow タイトル バーの結合
WinUI 3 カスタム タイトル バーは、Windows App SDK 1.4 の内部で、NonClientInputPointerSource API と共に AppWindow タイトルのバー実装を使用します。 その結果、両方のタイトル バー実装が、同じ機能と制限で同じように動作するようになりました。 これは、サポートされているすべてのケースで完全に下位互換性があります。カスタム定義のタイトル バーを持つアプリはすべて、前と同様に動作します。 ただし、カスタム タイトル バーを初めて使用する可能性がある WinUI 3 開発者は、これらの新機能を利用してより簡単に理解し、使用できるようになりました。
- 開発者が特にタイトル バー要素を定義しないより適切な既定のシナリオ (WinUI 2 からのフォールバック タイトル バーが置き換えられる)
- タイトル バー内に個別のドラッグ領域があるため、複数のドラッグ領域を作成し、クリック可能なコントロールをクライアント以外の領域 (タイトル バー領域) の任意の部分に配置できる
- アプリ内の任意の場所に配置したり、アプリ全体をドラッグ可能にしたりできるアプリ全体にわたるドラッグ可能な領域
- リソース ベースのテーマを置き換えるより適切なテーマのサポート
- ドラッグ領域は透明であるため、毎回アプリのテーマに従う
- カスタマイズの豊富さ。[最小化]、[最大化]、[閉じる] ボタンを非表示にする、タイトル バー内にシステム アイコンを配置する、さまざまな領域を NCHITTEST 応答を受信するキャプション ボタンとして機能させる
- ほとんどのシナリオでは上位レベルの WinUI 3 API を使用するが、下位レベルの制御には AppWindow API を混在させるなど、AppWindow タイトル バー API での組み合わせを可能にする開発者の自由度の向上
ウィジェットの更新
ウィジェット プロバイダーで実装する 3 つの新しいインターフェイス IWidgetProvider2
、IWidgetProviderAnalytics
、IWidgetProviderErrors
が追加されました。 IWidgetProvider2
を使用すると、プロバイダーは、ユーザーによって呼び出された [カスタマイズ] アクションに応答できます。これは、ファースト パーティ ウィジェットで使用可能なものと同じです。 IWidgetProviderAnalytics
および IWidgetProviderErrors
インターフェイスは、各ウィジェットのテレメトリを収集するためにプロバイダーによって使用されます。ウィジェットに関する分析およびエラー イベントは、対応するウィジェット プロバイダーに伝達されます。 新しい機能をサポートするための関連情報を伝達するために、WidgetCustomizationRequestedArgs
、WidgetAnalyticsInfoReportedArgs
、WidgetErrorInfoReportedArgs
の各クラスが使用されます。
XAML Islands が試験段階ではなくなった
XAML Islands と基になる ContentIslands プラットフォームが試験段階ではなくなりました。
- 現在、XAML Islands は C++ アプリでの使用のためにのみテストされます。 このリリースには、WPF または WinForms で使用するための便利なラッパー要素は含まれていません。
DesktopWindowXamlSource
とそれに関連する型が XAML Islands の Microsoft.UI.Xaml.Hosting 名前空間に追加されました。 要素の基になる Island 情報にアクセスしやすくするためにXamlRoot.ContentIslandEnvironment
が追加されました。- XAML Islands の基になるサポートとして、またはこの ContentIslands 機能を XAML なしで使用するために、Microsoft.UI.Content 名前空間と Microsoft.UI.Input 名前空間に多くの新しい型が導入されました。
- Island のシナリオのために、Microsoft.UI.Input.DragDrop 名前空間に新しい
DragDropManager
(および関連する型) が追加されました。
ItemsView
ItemsView
という名前の新しいリスト コントロールと、対応する具象クラス ItemContainer
を導入しています。 ItemContainer
は、選択状態とビジュアルが組み込まれた軽量のコンテナーです。これは、目的のコンテンツを容易にラップでき、コレクション コントロールのシナリオに ItemsView
と共に使用できます。
- 新しい
ItemsView
コントロールは、データ コレクションを表示します。ItemsView
はListView
およびGridView
コントロールに似ていますが、ItemsRepeater
、ScrollView
、ItemContainer
、ItemCollectionTransitionProvider
の各コンポーネントを使用して構築されます。 これは、カスタムLayout
またはItemCollectionTransitionProvider
実装をプラグインするための固有の機能を提供します。 もう 1 つの主な利点として、項目の選択を保持しながら、その場でレイアウトを切り替える機能があります。 内側のScrollView
コントロールもまた、プログラムによるスクロール中にアニメーションを制御する機能などの、ListView
/GridView
のScrollViewer
コントロールでは使用できない機能を提供します。ItemsRepeater
上の新しいItemTransitionProvider
プロパティ (および新しいItemsView
コントロール) を使用すると、そのコントロール上の切り替えアニメーションを制御するItemCollectionTransitionProvider
オブジェクトを指定できます。CreateDefaultItemTransitionProvider
メソッドもLayout
に追加されました。これにより、レイアウト オブジェクトは、ユーザーがItemsView
コントロールで明示的に提供しない場合、それに付随するフォールバック切り替えを提供できるようになります。- 項目のレイアウト方向 (存在する場合) がソース コレクション内のそのインデックスに基づいている場合の
Layout
上の新しいIndexBasedLayoutOrientation
プロパティ。 既定値はIndexBasedLayoutOrientation.None
です。 カスタム レイアウトは、新しい (保護された)SetIndexBasedLayoutOrientation
メソッドを呼び出してこのプロパティを設定します。 VirtualizingLayoutContext
上の新しいVisibleRect
プロパティは、Layout
に関連付けられたFrameworkElement
内の表示されているビューポートの四角形を取得します。 保護された仮想VirtualizingLayoutContext.VisibleRectCore
メソッドは、VisibleRect
プロパティから返される値を指定するようにオーバーライドできます。
- 新しい
LinedFlowLayout
クラスは通常、ItemsView
コレクション コントロールの項目をレイアウトするために使用されます。 これは、画像のコレクションを表示するために特に役立ちます。 これは、等しい高さのラインで左から右に、次に上から下にレイアウトすることによって行われます。 これらの画像によって水平線が塗りつぶされた後、次のラインに折り返されます。 画像は、ラインに収まるように、左端と右端でトリミングされる可能性があります。 また、拡大モードが使用されているとき、ラインを塗りつぶすために水平方向に拡張され、上端と下端でトリミングされる可能性もあります。
WinAppSDK 全体にまたがる新機能
- UWP の AccessibilitySettings クラスと同様に、Win32 WinRT アプリでシステムのハイ コントラスト設定がいつ変更されたかを検出できるようにする新しい
ThemeSettings
クラス。 詳細については、GitHub 上の ThemeSettings API の仕様を参照してください。 AccessKeyManager.EnterDisplayMode
は、指定されたルートの現在のフォーカスされた要素のアクセス キーを表示するための新しいメソッドです。 アクセス キーは、コマンドを呼び出すためにキーのヒントを表示しているとき (ペイントで Alt キーを押して、どのキーがどのコントロールに対応しているかを表示する場合など) に "表示モード" になります。 このメソッドを使用すると、プログラムで表示モードに入ることができます。Application.ResourceManagerRequested
は、既定のResourceManager
が機能しないシナリオで、リソース URI を解決するための別のIResourceManager
を指定するメカニズムを提供します。 詳細については、GitHub 上の Application.ResourceManagerRequested API の仕様を参照してください。- WebView2 SDK のバージョンが 1661.34 から 1823.32 に更新されました。
Popup/FlyoutBase.IsConstrainedToRootBounds = false
がサポートされるようになったため、ポップアップは親ウィンドウの境界外に拡張できます。 これらの制約なしのポップアップでのアクリルの使用をサポートするために、SystemBackdrop
プロパティがこれらの型に追加されました。 メニューは、既定ではこれを使用してアクリルを使用します。- オブジェクトまたはスレッドのシャットダウン中の処理を改善するために、
Closed
、FrameworkClosed
、IsClosed
がDesktopAcrylicController
とMicaController
に追加されました。 DesktopAcrylicController.Kind
が、いくつかの標準的なアクリルの外観から選択するように設定できるようになりました。DispatcherQueue
には、より適切に整理されたシャットダウンを容易にするため、また Islands を使用するアプリが標準のサポートされているイベント ループを簡単に実行するための新しいイベントとヘルパーがいくつか含まれています。- Microsoft.UI.Input 名前空間内の
InputNonClientPointerSource
は、カスタム タイトル バーのシナリオでクライアント以外の領域を定義するために使用できます。 これらの領域でのホバー イベントやクリック イベントなどの対応するイベント用のコードを登録できます。 AppWindow
には、DispatcherQueue
を取得して関連付けるための新しいヘルパーがいくつか含まれています。- 新しい
TreeView.SelectionChanged
イベントを使用すると、開発者は、ユーザーまたは分離コードがTreeView
コントロール内の選択された一連のノードを変更したときに応答できます。 - 新しい
ScrollView
コントロールは、ScrollViewer
に代わる新しい代替手段を提供します。 この新しいコントロールは、動作や API が既存のScrollViewer
コントロールと高度に整合されていますが、InteractionTracker
に基づいているため、アニメーション駆動型のビュー変更などの新機能を備え、またItemsRepeater
のすべての機能を保証するようにも設計されています。 詳細については、より柔軟な ScrollViewer · イシュー #108 · microsoft/microsoft-ui-xaml (github.com) を参照してください。 さまざまな新しい型 (ScrollPresenter
を含む) がScrollView
モデル全体に含まれています。 - 新しい
AnnotatedScrollBar
コントロールは、多数の項目間を簡単に移動する方法を提供することによって、通常のスクロール バーの機能を拡張します。 これは、マーカーとして機能するラベルが付いたクリック可能なレールを使用して実現されます。 また、クリック可能なレールの上にマウス ポインターを置くとツールヒントが表示されるため、スクロール可能なコンテンツのよりきめ細かな理解も可能になります。
既知の問題
ExtendsContentIntoTitleBar = true
を使用しているときにウィンドウの左上隅をクリックすると、ポインターがウィンドウのコンテンツに入力されるのではなく、既定では常にシステム ウィンドウ メニュー ([最小化]/[閉じる] など) が表示されます。 これは、たとえば、タイトル バーのその領域内の戻るボタンが機能しないことを示します。 この問題の回避策として、そのウィンドウの AppWindow でAppWindow.TitleBar.IconShowOptions = Microsoft.UI.Windowing.IconShowOptions.HideIconAndSystemMenu
を設定します。ShouldConstrainToRootBounds="False"
ポップアップを非表示にすると、いくつかの新しい継続可能な例外が発生します。 これには、ツールヒントを閉じると 4 つのネイティブな例外がスローされる · イシュー #8699 · microsoft/microsoft-ui-xaml (github.com) で報告されているように、ツールヒントの非表示が含まれます。- 1.4 では、
ExtendsContentIntoTitleBar = true
での [最小化]/[最大化]/[閉じる] キャプション ボタンが XAML ではなく、AppWindow によって描画されるようになりました。 これは仕様ですが、タイトル バーのキャプション ボタンを非表示にできない · イシュー #8705 · microsoft/microsoft-ui-xaml (github.com) のレポートにあるように、これらのボタンを非表示にするか、または追加のカスタマイズを行うために XAML の内部スタイルをオーバーライドしていたアプリに影響を与える場合があります。 - .NET 8 では、ランタイム識別子のグラフを処理する方法に破壊的変更がありました。[破壊的変更]: .NET 8 以上をターゲットとするプロジェクトでは、より小さい移植可能な RID グラフが既定で使用されます。 · イシュー #36527 · dotnet/docs (github.com)。 この問題のため、さらに .NET 8 がまだ正式にリリースされていないため、Windows App SDK 1.4 では .NET 8 が正式にサポートされていません。 ただし、このバージョンの App SDK で .NET 8 のプレリリース バージョンを引き続きターゲットとしたい場合は、次の手順をお勧めします。
- UseRidGraph を true に設定することをお勧めします。 また、
.csproj
ファイル内の<RuntimeIdentifiers>
プロパティを<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
に更新するだけでなく、各Propeties\*pubxml
ファイルを更新して<RuntimeIdentifier>
プロパティをwin10
からwin
に切り替える (<RuntimeIdentifier>win-x86</RuntimeIdentifier>
など) ことも必要です。
- UseRidGraph を true に設定することをお勧めします。 また、
- Windows App SDK 1.4 では、
Microsoft.WindowsAppSDK.DeploymentManager.CS.targets
内のターゲットGenerateDeploymentManagerCS
の名前がGenerateBootstrapCS
に変更されました。 MenuFlyout
の背景に、アプリケーションから要求されたテーマが使用されません。
バグ修正
Microsoft.Windows.AppLifecycle.AppInstance.Restart("")
API を呼び出すと、非パッケージ アプリがクラッシュしていた問題を修正しました。 詳細については、GitHub イシュー #2792 を参照してください。- 1.4-experimental1 で導入されたインストーラーのクラッシュの問題を修正しました。 詳細については、GitHub イシュー #3760 を参照してください。
- TextBlock でテキスト取り消し線が正しく削除されなかった問題を修正しました。 詳細については、GitHub イシュー #1093 を参照してください。
- TabFocusNavigation が [一度だけ] に設定されているパネルで Shift + Tab キーの移動が正しくない問題を修正しました。詳細については、GitHub イシュー #1363 を参照してください。
- 名前付き XAML コントロールのプロパティで
{x:Bind}
が正しく機能しなくなった C++/WinRT での問題を修正しました。 詳細については、GitHub イシュー #2721 を参照してください。 DebugSettings.EnableFrameRateCounter = true
を設定すると発生する WinUI デスクトップ アプリでのランタイム AccessViolation の問題を修正しました。 詳細については、GitHub イシュー #2835 を参照してください。XamlTypeInfo.g.cpp
に必要なヘッダーが含まれていなかった問題を修正しました。 詳細については、GitHub イシュー #4907 を参照してください。- マルチタッチとマウスの同時入力によって発生するクラッシュの問題を修正しました。 詳細については、GitHub イシュー #7622 を参照してください。
- マウス ポインターを置いたときの非アクティブなウィンドウのスクロールを無効にするシステム設定が有効な場合に、アクティブな WinUI 3 アプリ ウィンドウがスクロールできなくなっていた問題を修正しました。 詳細については、GitHub イシュー #8764 を参照してください。
MediaPlayerElement
をサブクラス化しようとしているときのクラッシュを修正しました。TreeView
でのクラッシュとメモリ リークのいくつかの問題を修正しました。RadioButtons
でキーボードを使用して移動しているときに発生する可能性があったアプリのハングの問題を修正しました。PipsPager
でキーボードを使用して移動しているときのクラッシュを修正しました。- 設定アプリの [テキスト サイズ] アクセシビリティ設定でスケーリングするように WebView2 コンテンツを修正しました。
- ディスプレイがオフのときにアニメーションが実行されていると発生する可能性があったクラッシュを修正しました。
- 最初のレイアウトまたはレンダリングに最大 10% のオーバーヘッドが追加された 1.3 で導入されたパフォーマンスの問題を修正しました。
関連トピック
Windows developer