.NET 4.6中的WPF
英文原文:WPF in .NET 4.6
盡管“WPF 已死”的謠言甚囂塵上,但微軟卻并沒有停止 WPF 開發的腳步。在 .NET 4.6 及未來版本的 WPF 中一共有四個主要的發展方向:
- 性能
- 與 DirectX 的集成
- 支持現代硬件
- 工具
在具體談到這四個方面之前,先讓我們談談關于支持的問題。微軟之前曾經多次在沒有經過充分調研的情況下,武斷地關閉了一些關于 WPF 及其它類庫的 bug 報告,更不要說修復它們了。這種態度招致了大量的指責。而作為 4.6 版本路線圖中的一部分,微軟將重新打開在 Connect 中所記錄的、投票數達到或超過 10 的所有 bug。雖然這種做法無法彌補之前的過失,但至少表現出微軟已經開始認真地對待社區的反饋聲音了。
從長期的計劃來看,對 .NET 4.5.2 中的 WPF 的支持將一直持續到 2024 年。究其原因,是因為 .NET 以及 WPF 被看作是一種操作系統組件,因此它們也自動獲得了與操作系統相同的支持周期。
觸摸的支持
對觸摸的支持改進主要專注于可靠性與性能等方面,尤其是在 UI 線程處于忙碌狀態的情況下。對于多點觸摸的事件報告也應當做到更加可靠。
滾動與虛擬化
WPF 的基礎特色之一在于它可以對某個列表中的控件進行虛擬化。從理論上說,這種方式可以允許在列表中包含超過 1 萬個列表項。而在實際中,有一系列的原因會造成虛擬化的失敗。其中之一在于過多的布局循環造成的系統懸掛,而在 WPF 4.6 中有望解決這一問題。
透明的子窗體
在 Windows 8 中新增了將子窗體標注為透明的功能,這一行為也加入到 WPF 的功能中。要實現這一點,需要在某個清單文件中注明該應用將使用 Windows 8 中的特性。如果該應用程序運行在 Windows 7 機器上,雖然不會拋出任何異常,但子窗體無法顯示為透明狀態。
高 DPI 問題
WPF 現在已經理解支持多種分辨率的光標文件了。在加載某個光標文件時,你需要將使用 DPI 用于比例尺(scale)這一參數設置為“true”,以使這一特性生效。之前,你可以使用某個臨時方案以解決這一限制,即手動檢測 DPI,并加載正確的光標圖片。
另一個高 DPI 問題與在例如組合框等控件中背景的繪制方式有關。其中的 bug 會造成邊框被切等現象,但雖然這個 bug 本身與所使用的 DPI 無關,但只有在高 DPI 的情況下這個 bug 才會顯現出來。
明天我們將繼續討論 WPF 的長期計劃,包括 WPF 應用本地化。