微軟發布 Windows UI Library 3 Preview 4
9分鐘讀
發表於
請閱讀我們的揭露頁面,了解如何幫助 MSPoweruser 維持編輯團隊的發展 阅读更多
WinUI 是一個用戶界面層,其中包含用於構建 Windows 應用程序(桌面和 UWP)的現代控件和样式。 作為 Windows 中的原生 UI 層,它體現了 Fluent Design,為每個 Windows 應用程序提供用戶期望的精美感覺。
[lwptoc title=”WinUI Library 3 Preview 4″ width=”40%” float=”right”]
WinUI 3 是 WinUI 框架的最新版本,將於今年晚些時候發布。 它將 WinUI 極大地擴展為一個完整的 UX 框架,使 WinUI 可用於所有類型的 Windows 應用程序——從 Win32 到 UWP——用作 UI 層。 準備就緒後,每個 Windows 應用程序都將能夠利用其現代控件,無論它們運行的 Windows 版本如何。
今天發布, WinUI 3 預覽版 4 是一個穩定性預覽版本,包括關鍵的錯誤修復和框架的其他一般改進。
預覽版 4 中引入的功能
- 與 WinUI 2.5 相同(包括 InfoBar 控件、ProgressRing 和 NavigationView 中的新功能以及錯誤修復)
- 自定義標題欄功能:允許開發人員在桌面應用程序中創建自定義標題欄的新 Window.ExtendsContentIntoTitleBar 和 Window.SetTitleBar API。
- VirtualSurfaceImageSource 支持
過去 WinUI 3 預覽版中引入的新特性和功能
WinUI 3 Preview 1-3 中引入了以下特性和功能,WinUI 3 Preview 4 繼續支持這些特性和功能。
- 能夠使用 WinUI 創建桌面應用程序,包括 NET 5 適用於 Win32 應用程序
- 徑向漸變筆刷
- 選項卡視圖更新
- 黑暗主題更新
- 改進和更新 網頁視圖2
- 支持高 DPI
- 支持窗口大小調整和移動
- 更新為針對最新版本的 Edge
- 不再需要引用特定於 WebView2 的 Nuget 包
- 交換鏈面板
- 捷運核心支持
- 這使應用程序在啟動時更快更輕,並提供更快的資源查找。
- ARM64支持
- 在應用程序內部和外部拖放
- RenderTargetBitmap(目前只有 XAML 內容 - 沒有 SwapChainPanel 內容)
- 自定義光標支持
- 線程外輸入
- 改善我們的工具/開發人員經驗:
- 實時可視樹,熱重載,實時屬性資源管理器和類似工具
- WinUI 3 的智能感知
- 開源遷移所需的改進
有關 WinUI 3 的優勢和 WinUI 路線圖的更多信息,請參閱 Windows UI 庫路線圖 在GitHub上。
預覽版 4 中修復的錯誤列表
下面是自預覽版 3 以來團隊已修復的面向用戶的錯誤列表。圍繞穩定性和改進我們的測試也有很多工作正在進行。
- 此版本採用了新版本的 CS/WinRT 和 Windows SDK,修復了以下錯誤:
- 使用 {Binding} 綁定到 URI 屬性時崩潰
- C#/WinRT Marshal 函數無法與 .NET 5 正確互操作
- 在 Windows Insider Builds 上運行時 WinUI 3 崩潰
- 感謝多個社區貢獻者在 GitHub 上報告此錯誤!
- WebView2 不會將主機應用程序的語言/區域設置應用於 CoreWebView2Environment
- Windows Community Toolkit DataGrid 控件在啟動/出現滾動條時崩潰應用程序
- 感謝多個社區貢獻者在 GitHub 上報告此錯誤!
- 顯示模式更改時頁面渲染進入不良狀態
- 在 CalendarView 中使用語言組合框時崩潰
- WinUI 3 桌面:無法從 WebView2 中跳出
- WinUI 3 桌面:帶有派生 TreeViewNodes 的 TreeView 崩潰
- WinUI 3 桌面:無法在 ContentDialog 內的 TextBox 中輸入文本
- WinUI 3 桌面:ALT 和 F6 不起作用
- 舊的被移除的 SwapChainPanel 呈現在新的 SwapChain 之上
- WinUI 3 桌面:無法使用觸控板滾動
- 在同一線程上使用具有多個窗口的 NavigationView 控件時崩潰
- 輔助功能問題:在 WinUI 桌面應用程序啟動時顯示焦點矩形
- 在 DataGrid 中滾動時訪問衝突
- WinUI 3 桌面:選項卡循環不起作用
- 使用 WinUI Xaml Islands 在桌面應用程序中拖放 GridView 失敗
- 輔助功能問題:無法在 WinUI 3 桌面上使用 PageUp/PageDown 鍵滾動
- WebView2 的視口大小錯誤
- 打開 MenuFlyout 後單擊時 WebView2 崩潰
- WinUI 3 桌面:嘗試關閉 DropDownButton 或 SplitButton 的彈出按鈕會導致應用程序崩潰
- WebView2:雙擊鼠標右鍵導致崩潰
- 單擊 ToggleSplitButton 會導致應用程序崩潰
- WinUI 3 桌面:任務欄上可見的空 DesktopWindowXamlSource 窗口
- WinUI 3 桌面:DataGrid 不顯示
- WinUI 3 桌面:無法將文件拖放到網格上
- WinUI 3 桌面:WinUI 3 Preview 2 中的 ItemsRepeater 崩潰
- 更新綁定時拋出 AccessViolationException
- WinUI 3 桌面:滾動 NavigationView 上的應用程序崩潰
- ItemsControl 在其 ItemsSource 集合中動態添加或刪除項目時不會更新。
- 如果啟用了 C++ 一致性模式,則 App.xaml.gh 中的編譯錯誤 C2760
局限性和已知問題
預覽版 4 只是一個帶有錯誤、限制和其他問題的預覽版,桌面應用程序的場景尤其新。
以下項目是 WinUI 3 Preview 4 的一些已知問題。
開發者工具
- 僅支持 C# 和 C++/WinRT 應用
- 桌面應用支持 .NET 5 和 C# 9,並且必須打包在 MSIX 應用中
- UWP 應用支持 .NET Native 和 C# 7.3
- 開發人員工具和 Intellisense 可能無法在 Visual Studio 16.8 版中正常工作。
- 沒有 XAML 設計器支持
- 不支持新的 C++/CX 應用程序,但是,您現有的應用程序將繼續運行(請盡快遷移到 C++/WinRT)
- 對桌面應用程序中的多個窗口的支持正在進行中,但尚未完成和穩定。
- 如果您發現新問題或具有多窗口行為的回歸,請在我們的 repo 中提交錯誤。
- 不支持未打包的桌面部署
- 使用 F5 運行桌面應用程序時,請確保您正在運行打包項目。 在應用程序項目上按 F5 將運行未打包的應用程序,WinUI 3 尚不支持該應用程序。
缺少平台功能
- Xbox 支持
- HoloLens 支持
- 窗口化彈出窗口
- 更具體地,所述
ShouldConstrainToRootBounds
屬性總是表現得好像它被設置為true
,無論屬性值如何。
- 更具體地,所述
- 墨水支持
- 丙烯酸樹脂
- MediaElement 和 MediaPlayerElement
- 地圖控制
- SwapChainPanel 和非 XAML 內容的 RenderTargetBitmap
- SwapChainPanel 不支持透明度
- Global Reveal 使用後備行為,實心畫筆
- 此版本不支持 XAML 島
- 第 3 方生態系統庫將無法充分發揮作用
- IME 不起作用
已知的問題
- Alt+F4 不會關閉桌面應用程序窗口。
- 由於與變化 核心窗口,以下 WinRT API 可能不再適用 桌面 預期的應用程序:
ApplicationView
並且所有相關的 API 將不再起作用。CoreApplicationView
並且所有相關的 API 將不再起作用。- 全部
GetForCurrentView
可能不支持 API,例如CoreInputView.GetForCurrentView
. CoreWindow.GetForCurrentThread
現在將返回 null。
有關在 WinUI 3 桌面應用程序中使用 WinRT API 的詳細信息,請參閱 桌面應用程序可用的 Windows 運行時 API.
- Windows.UI.ViewManagement.UISettings.ColorValuesChanged 事件 桌面應用程序不再支持。 如果您使用它來檢測 Windows 主題的更改,這可能會導致問題。
- 此版本包括一些實驗性 API。 這些尚未經過團隊的徹底測試,可能存在未知問題。 請 提交錯誤 如果您遇到任何問題,請訪問我們的倉庫。
- 以前,要獲取 CompositionCapabilities 實例,您可以調用 CompositionCapabilites.GetForCurrentView(). 但是,此調用返回的功能是 任何監管機構都不批准 取決於視圖。 為了解決和反映這個問題,我們在此版本中刪除了 GetForCurrentView() 靜態,所以現在您可以創建一個 作曲能力 直接對象。
- 對於 C# UWP 應用:WinUI 3 框架是一組 WinRT 組件,可以從 C++(使用 C++/WinRT)或 C# 中使用。 使用 C# 時,有兩個版本的 .NET,具體取決於應用程序模型:在 UWP 應用程序中使用 WinUI 3 時,您使用的是 .NET Native; 在桌面應用程序中使用時,您使用的是 .NET 5(和 C#/WinRT)。在 UWP 中將 C# 用於 WinUI 3 應用程序時,與 WinUI 3 桌面應用程序或 C# 中的 C# 相比,存在一些 API 命名空間差異WinUI 2 應用程序:某些類型位於
Microsoft
命名空間而不是System
命名空間。 例如,而不是INotifyPropertyChanged
界面在System.ComponentModel
命名空間,它在Microsoft.UI.Xaml.Data
命名空間。這適用於:INotifyPropertyChanged
(及相關類型)INotifyCollectionChanged
ICommand
System
命名空間版本仍然存在,但不能與 WinUI 3 一起使用。這意味著ObservableCollection
在 WinUI 3 C# UWP 應用程序中不能按原樣工作。 有關解決方法,請參閱 集合互操作示例 ,在 XAML 控件庫示例.
接下來會發生什麼?
開發者可以看看微軟的詳細介紹 功能路線圖 查看何時將特定功能引入 WinUI 3。
安裝 WinUI 3 預覽版 4
WinUI 3 Preview 4 包括 Visual Studio 項目模板,可幫助您開始使用基於 WinUI 的用戶界面構建應用程序,以及包含 WinUI 庫的 NuGet 包。 要安裝 WinUI 3 Preview 4,請按照以下步驟操作。
Windows 社區工具包
如果您使用的是 Windows 社區工具包, 下載最新版本.
除了 限制和已知問題,使用 WinUI 項目構建應用類似於使用 XAML 和 WinUI 2.x 構建 UWP 應用。 因此,大多數 指導文件 對於 UWP 應用和 Windows用戶界面 Windows SDK 中的 WinRT 命名空間適用。
有關開始使用 WinUI 項目模板的詳細信息,請參閱以下文章:
此版本的 API 參考文檔即將發布,但與此同時,開發人員可以查看 預覽版 3 的 WinUI 3 API 參考文檔.
如果您使用 WinUI 3 Preview 3 創建了一個項目,您可以升級您的項目以使用 Preview 4。請參閱 WinUI GitHub 存儲庫 有關詳細說明。
為了利用 WinUI 3 Preview 4 中添加的最新工具功能,例如 Hot Reload、Live Visual Tree 和 Live Property Explorer,您必須使用最新的 Visual Studio 預覽版和最新的 WinUI 3 預覽版,並確保啟用Visual Studio 預覽功能中的 WinUI 工具,如 這裡的說明.
XAML 控件庫(WinUI 3 Preview 4 分支)
看到 XAML 控件庫的 WinUI 3 Preview 4 分支 對於包含所有 WinUI 3 Preview 4 控件和功能的示例應用程序。
WinUI 3 Preview 4 XAML 控件庫應用程序示例
此 WinUI 3 預覽版旨在用於早期評估並收集開發人員社區的反饋。 這應該 不 用於生產應用程序。 微軟將在 3 年繼續發布 WinUI 2021 的預覽版,隨後在 2021 年 XNUMX 月發布第一個受支持的官方版本。
請使用 WinUI GitHub 存儲庫 提供反饋並記錄建議和問題。