Windows 應用程式 SDK 1.4 的穩定通道版本資訊
穩定通道提供的 Windows 應用程式 SDK 版本可支援生產環境的應用程式使用。 使用穩定版 Windows 應用程式 SDK 的應用程式也可以發布至 Microsoft Store。
重要連結:
- 如果想要將現有應用程式從舊版的 Windows 應用程式 SDK 升級至較新版本,請參閱將現有專案更新至最新版本的 Windows 應用程式 SDK。
最新穩定通道版本:
Windows 應用程式 SDK 的下載項目
注意
Windows 應用程式 SDK Visual Studio 延伸模組 (VSIX) 不再以獨立下載的形式發布。 它們改在 Visual Studio 內 的Visual Studio Marketplace 提供。
版本 1.4.7 (1.4.240802001)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正此問題
ItemsRepeater
:如果它位於快顯中ShouldConstrainToRootBounds="false"
,其比主視窗高或更寬,則不會產生足夠的專案。 - 已修正標籤
AnnotatedScrollBar
更新擱置時關機的潛在當機問題。
版本 1.4.6 (1.4.240512000)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正處理輸入時可能發生的當機情形。
- 已修正從另一個應用程式開始的拖放操作可能不允許正確複製/移動/連結放置操作的問題。
- 已修正用於偵錯的 WinUI 來源伺服器資訊,以正確指向 microsoft-ui-xaml GitHub 存放庫。
- 已修正 GitHub 問題 #8857 修正的問題,以正確將程式庫的
resources.pri
合併至應用程式的resources.pri
中。
版本 1.4.5 (1.4.240211001)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正在使用滑鼠滾輪捲動同時按下滑鼠按鈕可能造成應用程式靜止的問題。 關於更多資訊,請參閱 GitHub 問題 #9233。
- 已修正參照 NuGet 套件鏈時資產重複的問題。 關於更多資訊,請參閱 GitHub 問題 #8857。
- 已修正多個
BreadcrumbBar
問題,包括記憶體流失、省略號功能表空白時當機,以及省略號功能表在視窗內遭受錯誤限制。 - 已修正釋放圖形資源時關機可能發生當機的問題。
版本 1.4.4 (1.4.231219000)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正 WinUI 3 診斷安全性問題。
- 已修正密碼方塊透過觸控啟用時無法顯示螢幕鍵盤的輸入問題。 關於更多資訊,請參閱 GitHub 問題 #8946。
- 已修正
Microsoft.UI.Xaml.Controls.dll
檔案大小會意外增長的問題。 - 已修正設定焦點時可能導致當機的
CommandBarFlyout
問題。 - 已更新 Windows 應用程式 SDK 對 .NET 8 RID 特定資產處理方式的支援。
- 已修正某些交換鏈位置或延展錯誤的問題。
版本 1.4.3 (1.4.231115000)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正功能表顯示時可能會短時間內沒有背景的問題。
- 已修正特定多監視器情境可能發生當機的問題。
- 已修正操作功能表可能顯示在螢幕外的問題。
- 已修正視窗樣式和最大化行為的問題。 關於更多資訊,請參閱 GitHub 問題 #8996。
- 已修正 Islands 的焦點可能會遭到其他控制項意外擷取的問題。
- 已修正
NavigationView
的索引標籤順序問題。 - 已修正了在標題列上方可能顯示白色列的轉譯問題。 關於更多資訊,請參閱 GitHub 問題 #8947。
- 各種效能修正。
版本 1.4.2 (1.4.231008000)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正記憶體和物件配置過多而造成 explorer.exe 當機的問題。
- 已修正與標題列互動時返回按鈕無法正常運作的問題。
- 已修正多次包含的來源檔案會產生警告的問題。
- 已修正操作功能表效能受影響的問題。
- 已修正目標 .exe 始終對 WindowsApps 資料夾中的套件指向相同位置的 .lnk 捷徑問題。
- 已修正特定字型的 Indic 文字無法正確轉譯的 DWriteCore 問題。
- 已修正清單檢視中鍵盤無法以 Tab/Shift + Tab 來回瀏覽巢狀選取的項目的問題。
- 已修正第二次展開 ComboBox 後,觸控會中斷 ComboBox 項目捲動的問題。 關於更多資訊,請參閱 GitHub 問題 #8831。
- 已修正 WinAppSDK 套件無法為某些語言加入 WinUI 當地語系化資源的問題。
- 已修正檔案總管和 XAML 在顯示使用者偏好語言時不一致的問題。
- 已修正檔案總管的使用中索引標籤下方顯示細線的工藝問題。
- 已修正某些提供架構的鍵盤快速鍵並未正確當地語系化的問題。 關於更多資訊,請參閱 GitHub 問題 #2023。
- 已修正點選 RepeatButton 控制項時重複捲動的問題。
- 已修正 WinAppSDK 安裝程式 .exe,以取得正確的的資源版本資訊。
版本 1.4.1 (1.4.230913002)
這是 Windows 應用程式 SDK 的維修版本,其中包含 1.4 版的重要錯誤修正。
- 已修正效能問題,改善第一個畫面顯示的時間。
- 已修正功能表不遵守
RequestedTheme
的問題。 舉例來說,該問題可能導致白色背景上顯示白色文字。 關於更多資訊,請參閱 GitHub 問題 #8756。 - 已修正壓克力背景有時會在某些功能表中變成完全透明的問題。
- 已修正 XAML 有時會造成 Windows 不必要地重新繪製桌面桌布的問題。
- 已修正
TabNavigation = Local
及TabNavigation = Cycle
針對ListView
和GridView
的支援功能,現在除了箭頭鍵之外,您還能使用 TAB 在標頭和項目之間來回瀏覽。 - 已修正關閉工具提示時產生部分雜訊例外的問題。 關於更多資訊,請參閱 GitHub 問題 #8699。
版本 1.4 的新功能和更新功能以及已知問題
下列各節說明 1.4 版的新功能、更新功能和已知問題。
在現有的 Windows 應用程式 SDK 1.3 應用程式中,您可以將 Nuget 套件更新為 1.4.230822000 (請參閱使用 NuGet 套件管理員 在 Visual Studio 安裝和管理套件中的更新套件一節)。
如需更新的執行階段和 MSIX,請參閱 最新的 Windows 應用程式 SDK 下載。
自訂標題列 + AppWindow 標題列合併
WinUI 3 自訂標題列會使用 AppWindow 標題列實作及 NonClientInputPointerSource API (也就是 Windows 應用程式 SDK 1.4)。 因此,這兩種標題欄實作現在的行為方式都一樣,也有相同的功能和限制。 此設定已經完全向後相容至所有支援的案例,任何具有自訂定義標題列的應用程式都會按照以前的方式運作。 但是,對於可能初次使用自訂標題列的 WinUI 3 開發人員來說,現在已可藉由善用新功能來更容易瞭解與使用這些功能:
- 較佳的預設情境是開發人員並未特別定義標題欄元素 (取代 WinUI 2 的後援標題列)
- 標題列的不同拖曳區域,可讓您在非用戶端區域 (標題列區域) 的任何部分建立多個拖曳區域並放置可點擊的控制項
- 應用程式範圍內可拖曳的區域,可放置於應用程式中任何位置,或讓整個應用程式可拖曳
- 加強佈景主題支援,取代以資源為基礎的佈景主題
- 由於拖曳區域透明,所以每次都會隨應用程式的佈景主題變化
- 更多自訂功能:隱藏最小化、最大化和關閉按鈕;將系統圖示放在標題列中;或讓不同區域擔任標題按鈕來接收 NCHITTEST 回應
- 開發人員自主性更高,可讓您混用與配對 AppWindow 標題列 API,例如將較高層級的 WinUI 3 API 用於多數情境,但將 AppWindow API 混用在較低層級的控制中
小工具更新
新增三種新介面,可供小工具提供者實作: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 命名空間。XamlRoot.ContentIslandEnvironment
已新增,有助於存取元素的基礎 Island 資訊。- 許多新類型的 Microsoft.UI.Content 命名空間和 Microsoft.UI.Input 命名空間已推出,可當作 XAML Islands 的基礎支援,或可在沒有 XAML 時使用此 ContentIslands 功能。
- 新的
DragDropManager
(加上相關類型) 已新增到 Microsoft.UI.Input.DragDrop 命名空間供 Island 情境使用。
ItemsView
我們即將推出名稱為 ItemsView
的新清單控制項,以及對應的實體 ItemContainer
類別。 ItemContainer
是一種輕量的容器,內建選取狀態和視覺,可輕易包覆所需內容,並搭配 ItemsView
使用於集合控制項情境。
- 新的
ItemsView
控制項會顯示資料集合。ItemsView
類似於ListView
和GridView
控制項,但在組建時使用的是ItemsRepeater
、ScrollView
、ItemContainer
和ItemCollectionTransitionProvider
元件。 它提供的獨特功能可用於插入自訂Layout
或ItemCollectionTransitionProvider
實作。 其他關鍵優勢還有即時切換版面配置,同時保留項目選擇的功能。 內部的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 提供的新功能
- 新的
ThemeSettings
類別可讓 Win32 WinRT 應用程式偵測到系統的高對比設定發生變更,此功能類似 UWP 的 AccessibilitySettings 類別。 請參閱 GitHub 的 ThemeSettings API 規格了解詳情。 AccessKeyManager.EnterDisplayMode
是針對既有根目錄目前的焦點元素顯示存取金鑰的新方法。 顯示叫用命令的按鍵提示時,存取金鑰會處於「顯示模式」,例如在小畫家按下 Alt 鍵可顯示各個按鍵對應的控制項。 這種方法可讓使用者以程式設計方式進入顯示模式。Application.ResourceManagerRequested
透過一套機制來提供不同的IResourceManager
,以便在預設ResourceManager
無法運作時解析資源 URI。 請參閱 GitHub 的 Application.ResourceManagerRequested API 規格了解詳情。- WebView2 SDK 版本已從 1661.34 更新為 1823.32。
Popup/FlyoutBase.IsConstrainedToRootBounds = false
已受支援,可讓快顯視窗/飛出視窗延伸到父視窗的邊界之外。 這些類型已新增SystemBackdrop
屬性,藉此支援在這類不受限的快顯視窗使用壓克力。 功能表會按照預設,使用此屬性來加上壓克力。Closed
、FrameworkClosed
和IsClosed
已新增到DesktopAcrylicController
和MicaController
,藉此改善物件/執行緒關閉時的處理方式。DesktopAcrylicController.Kind
現在已可設為可在幾種標準壓克力外觀中做選擇。DispatcherQueue
有幾種新的事件和協助程式可加強讓關閉更井然有序,且可讓使用 Islands 的應用程式輕鬆執行標準的受支援事件迴圈。InputNonClientPointerSource
在 Microsoft.UI.Input 命名空間中可用於自訂標題列情境,藉此定義非用戶端區域的地區。 程式碼可註冊對應事件,例如在這些地區的懸停和點擊事件。AppWindow
有幾種新的協助程式可取得DispatcherQueue
並與之建立關聯。- 新的
TreeView.SelectionChanged
事件可讓開發人員在使用者或程式碼後置變更了TreeView
控制項的所選節點組合時作出回應。 - 新的
ScrollView
控制項提供ScrollViewer
的新替代方案。 這個新的控制項在行為和 API 方面與現有的ScrollViewer
控制項高度重疊,但卻是以InteractionTracker
為基礎,具備動畫驅動的檢視變更等功能,且也是為了確保ItemsRepeater
的完整功能而設計。 請參閱更有彈性的 ScrollViewer · 問題編號 108 · microsoft/microsoft-ui-xaml (github.com) 了解詳情。 完整的ScrollView
模型已加入各種新類型,包括ScrollPresenter
。 - 新的
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
的最小化/最大化/關閉標題按鈕現在改由 AppWindow 繪製,而不是 XAML。 這是預設的設計,但它可能影響原本會覆寫 XAML 內部樣式的應用程式,讓它隱藏這些按鈕或執行額外自訂,例如此回報所述:無法隱藏標題列的標題按鈕 · 問題 #8705 · microsoft/microsoft-ui-xaml (github.com) - .NET 8 針對執行階段識別碼圖形的處理方式有重大變更:[重大變更]:以 .NET 8 和更高版本為目標的專案預設會使用小型的可攜式 RID 圖形 · 問題 #36527 · dotnet/docs (github.com)。 由於存在此問題,且 .NET 8 尚未正式發布,因此 Windows 應用程式 SDK 1.4 並未正式支援 .NET 8。 不過,如果您仍想要指定讓 .NET 8 的發布前版本搭配此版本的應用程式 SDK,建議您執行下列步驟:
- 建議將 UseRidGraph 設為 true。 您必須將
.csproj
檔案中的<RuntimeIdentifiers>
屬性更新為<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
,並且更新每個Propeties\*pubxml
檔案,藉此將<RuntimeIdentifier>
屬性中的win10
切換win
(例如<RuntimeIdentifier>win-x86</RuntimeIdentifier>
)。
- 建議將 UseRidGraph 設為 true。 您必須將
- Windows 應用程式 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。
- 已修正 C++/WinRT 的
{x:Bind}
無法搭配已命名 XAML 控制項的屬性正常運作的問題。 關於更多資訊,請參閱 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 內容,可在「設定」應用程式中以 [文字大小] 協助工具的設定來縮放比例。
- 已修正動畫在顯示器關閉時執行時可能當機的問題。
- 已修正 1.3 中第一個版面配置/轉譯會增加約 10% 額外負荷的效能問題。