微軟發布 Windows UI Library 3 Preview 4

閱讀時間圖標 9分鐘讀


讀者幫助支持 MSpoweruser。如果您透過我們的連結購買,我們可能會獲得佣金。 工具提示圖標

請閱讀我們的揭露頁面,了解如何幫助 MSPoweruser 維持編輯團隊的發展 阅读更多

威威3

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 可能不再適用 桌面 預期的應用程序:

    有關在 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 分支 對於包含所有 WinUI 3 Preview 4 控件和功能的示例應用程序。


WinUI 3 Preview 4 XAML 控件庫應用程序示例

此 WinUI 3 預覽版旨在用於早期評估並收集開發人員社區的反饋。 這應該  用於生產應用程序。 微軟將在 3 年繼續發布 WinUI 2021 的預覽版,隨後在 2021 年 XNUMX 月發布第一個受支持的官方版本。

請使用 WinUI GitHub 存儲庫 提供反饋並記錄建議和問題。

有關主題的更多資訊: 開發, 微軟, winui 3 預覽 4