天天看點

Windows 10新功能

Windows 10 中面向開發人員的新增功能

Windows 10 及新增的開發人員工具将提供新通用 Windows 平台支援的工具、功能和體驗。在 Windows 10 上安裝完工具和 SDK 後,你可以随時建立新的通用 Windows 應用,或了解如何使用 Windows 上的現有應用代碼。

凱文·蓋洛提供系統的快速綱要以及直接支援新的 Windows 10 開發體驗的工具更新。

了解通用 Windows 平台如何将自适應 UI 控件用于不同的裝置類型,以及它如何使用運作 Windows 10 的所有裝置上必須具有的通用 API 集。

了解玩家如何才能進行連接配接和玩遊戲 - 玩家的遊戲、好友和成就将在其所有 Windows 裝置上保持一緻。

自适應布局

XAML 功能

圖形

網絡

文本

工具

安全

Web

使用者體驗

應用模型

媒體

裝置

系統服務

傳回頁首

XAML 針對定義用于共享相同代碼檔案的定制視圖(.xaml 檔案)提供了新的支援。這使你可以更加友善地建立和保留已定制為特定裝置系列或方案的不同視圖。如果你的應用具有不同的 UI 内容、布局或導航模型(與對應的方案截然不同),應建構多個視圖。例如,對于針對移動版應用的單手使用模式進行優化的導航菜單,你可以使用 Pivot;而對于針對桌面版應用的滑鼠輸入進行優化的導航菜單,你可以使用 SplitView。

使用新的 VisualState.StateTriggers 功能,你可以基于視窗高度/寬度或者基于自定義觸發器有條件地設定相關屬性。之前,你必須在代碼中處理 Window SizeChanged 事件并調用 VisualStateManager.GotoState。

使用新的 VisualState.Setters 文法,你可以使用簡化的标記定義 VisualStateManager 中的屬性更改。之前,你必須使用情節提要并建立動畫來應用屬性更改,例如将 StackPanel 的方向從水準更改為垂直。在通用 Windows 應用中,你可以使用以下更加簡單的 Setter 文法:

在通用 Windows 應用中,你可以使用基于編譯器的新綁定機制,該機制可通過 x:Bind 屬性進行啟用。基于編譯器的綁定将在編譯時嚴格設定類型并進行處理,這将非常快速并且會在綁定類型不比對時提供編譯時錯誤。因為綁定已轉換為編譯的應用代碼,是以你現在就可以調試綁定,方法是在 Visual Studio 中逐漸執行代碼以診斷特定的綁定問題。你還可以使用 x:Bind 綁定到某一方法,如下所示:

對于典型的綁定方案,你可以使用 x:Bind 替代綁定,進而獲得改進的性能和可維護性。

在通用 Windows 應用中,新的 x:Phase 屬性允許你借助 XAML(而非代碼)執行清單的增量呈現或階段性呈現。當平移帶有複雜項目的較長清單時,你的應用呈現項目的速度可能不足以跟上平移的速度,緻使你的使用者獲得了一次槽糕的體驗。階段性呈現讓你可以在某一清單項目中指定個别元素的呈現優先級,以便僅該清單項目中最重要的部分才能在快速平移方案中呈現。這将為你的使用者提供一次較為順暢的平移體驗。

在 Windows 8.1 中,你可以處理 ContainerContentChanging 事件,并編寫用于分階段呈現清單項目的代碼。在 UWP 應用中,你可以使用 x:Phase 屬性以聲明方式完成階段性呈現。通過将 x:Phase 與已編譯的綁定 x:Bind 結合使用,你可以在資料模闆中為每個綁定元素輕松指定呈現優先級。在進行平移時,呈現項目所需執行的操作是基于階段按時間進行分片,這将支援增量項目呈現。

在通用 Windows 應用中,新的 x:DeferLoadingStrategy 指令允許你指定要延遲加載的使用者界面部分,進而改進啟動性能并減少應用的記憶體使用量。例如,如果你的應用 UI 中存在一個僅在輸入錯誤資料時才顯示的資料驗證元素,則你可以根據需要延遲該元素的加載。随後,這些元素對象将不會在加載頁面時建立,它們隻會在發生資料錯誤或者需要添加到頁面的可視樹時才會進行建立。

借助新的 SplitView 控件,你可以輕松顯示和隐藏瞬态内容。該控件通常用于“漢堡包菜單”之類的頂級導航方案,其中導航内容處于隐藏狀态,可按需滑入作為使用者操作的結果。

RelativePanel 是一種新型的布局面闆,該面闆允許你放置子對象并使其互相對齊或與父面闆對齊。例如,你可以指定某些文本應始終置于該面闆的左側,并指定按鈕應始終向下對齊文本。當建立沒有明确的線性模式的使用者模式但卻要求使用 StackPanel 或 Grid時,可使用 ReleativePanel。

借助 CalendarView 控件,可使用基于月份的自定義視圖輕松檢視和選擇日期以及日期範圍。CalendarView 支援相關功能,例如可将最小日期、最大日期和截止日期限制在可選的日期範圍内。你還可以設定自定義密度欄,這些密度欄可用于顯示某一天的計劃的一般“細節”。

CalendarDatePicker 是一個下拉式控件,該控件已針對從CalendarView 選取某個日期進行了優化,尤其是能夠顯示諸如星期幾或豐富的月曆資訊等上下文資訊。它類似于 DatePicker 控件,不過 DatePicker 是針對選取一個已知日期(例如出生日期)進行優化的。

借助新的 MediaTransportControls 類,可更輕松地自定義 MediaElement 的傳輸控件。在 Windows 8.1 中,你可以啟用 MediaElement 的内置傳輸控件,或通過調用 MediaElement 方法建立你自己的傳輸控件。現在,你可以使用 MediaTransportControls 的内置功能,并且仍然可以輕松地自定義其外觀,以适合你的應用。

在通用 Windows 應用中,你可以聽 DependencyObjects 上的屬性更改,即便是屬性沒有對應的更改事件也是如此。

通知的操作行為類似于事件,但實際上顯示為回調。與事件處理程式一樣,回調将提取一個發件人參數,但不會提取事件參數。而是,将僅傳遞屬性辨別符來訓示是哪個屬性。借助此資訊,你的應用可以定義多個屬性通知的單個處理程式。有關詳細資訊,請參閱 RegisterPropertyChangedCallback 和 UnregisterPropertyChangedCallback。

已更新為提供 3D 鳥瞰圖和街景視圖的 MapControl 類。這些新功能和早期的映射功能現在可用于 Universal Windows App。使用以下 API 将映射添加到你的應用:

Windows.UI.Xaml.Controls.Maps 命名空間 - 顯示地圖

Windows.Services.Maps 命名空間 - 查找位置和路線

若要立即開始在 Universal Windows App 中使用這些 API,請從必應地圖開發人員中心請求一個密鑰。有關詳細資訊,請參閱如何驗證地圖應用。同樣作為 Windows 10 中的新增功能,電腦使用者和手機使用者可以從“設定”應用下載下傳脫機地圖。當 Internet 通路不可用時,MapControl 可使用脫機地圖(如果可用)來顯示地圖。

Windows.UI.Xaml.Input.KeyEventArgs 類具有新的 OriginalKey 屬性以及對 Windows.System.VirtualKey 所做的相應更新,進而讓你可以擷取與鍵盤輸入事件關聯的原始且未映射的輸入按鈕。

借助 InkCanvas 控件和基礎 InkPresenter 類,現在可以更容易地使用采用 C++、C# 或 Visual Basic 的 Windows 運作時應用中功能強大的墨迹功能。

InkCanvas 控件定義了一個用于繪制和呈現墨迹筆劃的覆寫區域。此控件的功能(輸入、處理和呈現)源自InkPresenter、InkStroke、InkRecognizers 和 InkSynchronizer 類。

重要提示這些類在使用 JavaScript 的 Windows 應用中不受支援。

CommandBar 和 AppBar 控件已針對跨裝置系列的 UWP 應用更新為具有一緻的 API、行為和使用者體驗。

适用于通用 Windows 應用的 CommandBar 控件已得到了改進,進而可提供 AppBar 功能的超集,并且針對如何将其用于你的應用提供了更大的靈活性。對于 Windows 10 上所有新的通用 Windows 應用,應使用 CommandBar。在 Windows 8.1 的 CommandBar 中,你隻能使用已實作 ICommandBarElement 的控件,如 AppBarButton。在通用 Windows 應用中,除了 AppBarButtons 外,你現在還可以将自定義内容放入 CommandBar 中。

AppBar 控件已得到了更新,以便你可以更加輕松地将使用 AppBar 的 Windows 8.1 應用移動到通用 Windows 平台。AppBar 設計為可與全屏應用一起使用并且可通過邊緣手勢進行調用。針對諸如 Window 應用以及 Window 10 中缺少邊緣手勢等問題對控件帳戶進行更新。

之前僅在 Windows Phone 上提供的隐藏 AppBar.ClosedDisplayMode 現在在所有裝置系列上均受支援,進而讓你可以在不同的指令提示級别之間選擇。AppBar 預設情況下顯示最少内容的提示,以便在将你的 Windows 8.1 應用更新到通用 Windows 應用時能為你提供一緻性,不過你将無法再依賴平台中的邊緣手勢支援。

新的 AppBar API: Closing、OnClosing、Opening、OnOpening、TemplateSettings

新的 CommandBar API: CommandBarOverflowPresenterStyle 和 CommandBarOverflowPresenter

在 Windows 10 之前的版本中,預設的 GridView 布局方向在 Windows 上為水準方向,而在 Windows Phone 上為垂直方向。在 UWP 應用中,GridView 預設情況下針對所有裝置系列使用垂直布局,以確定你能獲得一緻的預設體驗。

當你在 ListView 或 GridView 中顯示分組資料時,組标頭将在清單滾動時保持可見狀态。這對于大型資料集很重要,其中标頭為使用者正在檢視的資料提供了上下文。不過,在每個組中僅具有少數幾個元素時,你可能會希望标頭随着項目滾動至螢幕外。你可以通過設定 ItemsStackPanel 和 ItemsWrapGrid 上的 AreStickyGroupHeadersEnabled 屬性控制此行為。

當你在 ItemsControl 中顯示分組資料時,你可以通過調用 GroupHeaderContainerFromItemContainer 方法,擷取對該組父标頭的引用。例如,如果使用者要在某組中删除最後一項,你可以擷取對該組标頭的引用,并同時删除該項群組标頭。

借助 ListViewBase 上的新 ChoosingGroupHeaderContainer 事件,你可以在 ListView 或 GridView 中設定組标頭的狀态。例如,你可以通過處理此事件,将組标頭上的 AutomationProperties.Nameproperty 設定為借助輔助技術來辨別該組。

借助 ListViewBase 上的新 ChoosingItemContainer 事件,你可以更好地控制 ListView 或 GridView 中的 UI 虛拟化。将此事件與ContainerContentChanging 事件結合使用,以保持你自己的要根據需要利用的回收容器的隊列。例如,如果資料源因需篩選而被重置,你可以通過快速将一組已建立的視覺對象 (ItemContainers) 與其對應的資料比對擷取最佳性能。

XAML ListView 和 GridView 控件中有一個新 ListViewBase.ChooseingItemContainer 事件,該事件可在資料集合中發生更改時改進控件的性能。

系統現在将目前項與焦點狀态和選擇狀态保留在視圖中,而不是執行該清單的完全重置,這将重新播放 Entrance 動畫;視口中的新項和已删除的項将流暢地閃爍。一旦未破壞的容器中的資料集合發生變化,應用即可快速将所有“舊”項與其之前的容器比對,并跳過容器生命周期替代方法的進一步處理。僅“新”項得到處理并與回收的容器或新容器相關聯。

在通用 Windows 應用中,借助 ListView 和 GridView 控件,你現在可以根據項目索引的範圍(而非項目對象引用)選擇相應項目。這對于描述項目選項而言是一種非常有效的方式,因為無需針對每個標明項目建立項目對象。有關詳細資訊,請參閱ListViewBase.SelectedRanges、ListViewBase.SelectRange 和 ListViewBase.DeselectRange。

ListView 和 GridView 使用項目表示器來提供預設的視覺對象,以供選擇和着重顯示。在 UWP 應用中,ListViewItemPresenter 和GridViewItemPresenter 具有新的屬性,以便你可以針對清單項目進一步自定義視覺對象。新增的屬性為 heckBoxBrush、CheckMode、FocusSecondaryBorderBrush、PointerOverForeground、PressedBackground 和 SelectedPressedBackground。

對于跨所有裝置系列的 UWP 應用,SemanticZoom 控件現在具有一緻的行為。

在放大視圖和縮小視圖之間切換的預設操作是,點選放大視圖上的組标頭。這與 Windows Phone 8.1 上的此類行為相同,不過在 Windows 8.1 上有所變動,因為其中使用了收縮手勢進行縮放。若要使用收縮手勢更改視圖,應在 SemanticZoom 的内部 ScrollViewer 上設定 ScrollViewer.ZoomMode="Enabled"。

對于通用 Windows 應用,縮小視圖将替代放大視圖,并且前者與所替換的視圖的大小相同。這與 Windows 8.1 上的此類行為相同,不過在 Windows Phone 8.1 上有所變動,因為其中縮小視圖會占用整個螢幕,并且會在其他所有内容的頂部呈現。

對于跨所有裝置系列的通用 Windows 應用,DatePicker 和 TimePicker 控件現在具有一個一緻的實作。此外,它們在 Windows 10 中有了新的外觀。彈出部分現在可在所有裝置上使用 DatePickerFlyout 和 TimePickerFlyout 控件。這與 Windows Phone 8.1 上的此類行為相同,不過在 Windows 8.1 上有所變動,因為其中可使用 ComboBox 控件。通過使用浮出控件,你可以更輕松地建立自定義的日期和時間選取器。

ScrollViewer 具有新的 DirectManipulationStarted 和 DirectManipulationCompleted 事件,可在觸摸平移開始和停止時通知應用。你可以處理這些事件,以通過這些使用者操作調整 UI。

通用 Windows 應用提供了可更輕松地建構更好的上下文菜單的全新 API。新 MenuFlyout.ShowAt 方法可用于指定浮出控件相對于其他元素的出現位置。(并且,你的 MenuFlyout 甚至可以覆寫應用視窗邊界。) 若要建立層疊菜單,請使用新的 MenuFlyoutSubItem類。

常用容器控件具有新的邊框屬性,可用于在其周圍繪制邊框,而無需向你的 XAML 添加額外的邊框元素。ContentPresenter、Grid 和StackPanel 具有以下新屬性: BorderBrush、BorderThickness、CornerRadius 和 Padding。

ContentPresenter 具有可更好地控制文本顯示的新 API: LineHeight、LineStackingStrategy、MaxLines 和 TextWrapping。

XAML 控件的焦點視覺對象現在由系統建立,而不是在控件模版中被聲明為 XAML 元素。移動裝置通常不需要焦點視覺對象,讓系統按需建立并管理它們可改進應用性能。如果你需要更好地控制焦點視覺對象,可以替換該系統行為并提供定義焦點視覺對象的自定義控件模闆。有關詳細資訊,請參閱 UseSystemFocusVisuals 和 IsTemplateFocusTarget。

在通用 Windows 應用中,PasswordRevealMode 屬性将替換 IsPasswordRevealButtonEnabled 屬性,以跨裝置系列提供一緻的行為。

警告: 在 Windows 10 之前的版本中,密碼顯示按鈕預設處于不顯示狀态;在通用 Windows 應用中,它預設處于顯示狀态。如果裝置安全要求始終掩蓋密碼,請務必将 PasswordRevealMode 設定為 Hidden。

以前可在 Windows Phone 8.1 上使用的 IsTextScaleFactorEnabled 屬性現在可用于所有裝置系列上的通用 Windows 應用。

Windows Phone 8.1 中的 AutoSuggestBox 控件現在可用于所有裝置系列上的通用 Windows 應用,你應使用它而不是 SearchBox。AutoSuggestBox 在使用者鍵入時即提供建議,與各種輸入類型相輔相成,如觸摸、鍵盤和輸入法編輯器。它還具有一些可使之更好地發揮搜尋框作用的新成員:QueryIcon 屬性和 QuerySubmitted 事件。

Windows Phone 8.1 中的 ContentDialog 控件現在可用于所有裝置系列上的通用 Windows 應用。ContentDialog 可用于顯示可在所有系列的裝置上完美運作的自定義模式對話框。

Windows Phone 8.1 中的 Pivot 控件現在可用于所有裝置系列上的通用 Windows 應用。現在,你可以将相同的 Pivot 控件用于你的移動和桌面裝置應用。Pivot 基于螢幕大小和輸入類型提供自适應行為。你可以設定 Pivot 控件的樣式,以提供類似頁籤的行為,每個透視項中包含不同的資訊視圖。

新的 Windows.UI.Text.Core 命名空間具有一個用戶端-伺服器系統功能,該系統可将鍵盤輸入處理集中到單個伺服器。

你可以使用它來操作自定義文本輸入控件的編輯緩沖區。通過應用和伺服器之間的異步通信通道,文本輸入伺服器可確定你的文本輸入控件及其本身的編輯緩沖區内容始終保持同步。

Glyphs 元素具有新的 IsColorFontEnabled 和 ColorFontPalleteIndex 屬性,可支援彩色字型;現在,你可以使用字型檔案呈現基于字型的圖示。在将 ColorFontPalleteIndex 用于調色闆切換時,可使用不同的顔色組合呈現一個圖示;例如,顯示該圖示的啟用和禁用版本。

使用者有時通過“輸入法編輯器”輸入文本,該編輯器顯示在視窗中文本輸入框的正下方(通常用于東亞語言)。若要使你的應用 UI 與 IME 視窗相得益彰,你可以對 TextBox 和 RichEditBox 使用 CandidateWindowBoundsChanged 事件和 DesiredCandidateWindowAlignment 屬性。

TextBox 和 RichEditBox 具有以下新事件,可在使用“輸入法編輯器”撰寫文本時通知應用: TextCompositionStarted、TextCompositionEnded 和 TextCompositionChanged。你可以處理這些事件,以通過 IME 文本撰寫程序調整應用代碼。例如,你可以為東亞語言實作内聯自動完成功能。

XAML 文本控件具有全新 API,可改進雙向文本處理,進而針對各種輸入語言生成更好的文本對齊方式和段落方向。

TextReadingOrder 屬性的預設值已更改為 DetectFromContent,是以對檢測讀取順序的支援在預設情況下處于啟用狀态。TextReadingOrder 屬性也已添加到 PasswordBox、RichEditBox 和 TextBox。

若要選擇從内容自動檢測對齊方式,可以将文本控件的 TextAlignment 屬性設定為新的 DetectFromContent 值。

在 Windows 10 中,在大多數情況下,現在 XAML 應用中的文本的呈現速度幾乎是 Windows 8.1 的兩倍。在大多數情況下,你的應用将受益于此改進而無需任何更改。除了更快的呈現速度以外,這些改進還使 XAML 應用的正常記憶體消耗減少了 5%。

通過語音指令擴充 Cortana 的基本功能,這些指令用于在外部應用程式中啟動并執行一個單獨操作。

通過內建應用的基本功能,并通過為使用者提供中心入口點以便在無需直接打開應用的情況下完成大多數任務,Cortana 可以充當應用和使用者之間的聯絡人。在大多數情況下,這可以為使用者節省大量時間和精力。

了解如何将應用內建到 Cortana Canvas。如果你需要創意,可以參考通用 Windows 應用設計基礎知識中特定于 Cortana 的設計建議和 UX 指南。

新的 Windows.System.Launcher.LaunchFolderAsync 方法允許你啟動檔案資料總管并顯示所指定的檔案夾的内容。

新的 Windows.ApplicationModel.DataTransfer.SharedStorageAccessManager 類及其方法允許你與另一個應用共享檔案,方法是當通過使用 URI 激活啟動另一個應用時,傳遞一個共享标記。目标應用通過兌換該令牌來擷取由源應用共享的檔案。

通過将 ms-settings 協定與 LaunchUriAsync 方法結合使用,顯示内置的設定頁面��例如,以下代碼可用于顯示 Wi-Fi 設定頁面。

有關可以顯示的設定頁面清單,請參閱如何使用 ms-settings 協定顯示内置設定頁面。

通過 Windows 10 中新增的應用到應用的通信 API,Windows 應用程式(以及 Windows Web 應用程式)可以互相啟動并交換資料和檔案。

利用這些新 API,使得原本需要使用者使用多個應用程式才能完成的複雜任務現在可以無縫地進行處理。例如,你的應用可啟動社交網絡應用來選擇聯系人,或啟動結算應用程式來完成支付流程。

在 Windows 10 中,應用可以使用應用服務為其他應用提供服務。應用服務采用背景任務形式。前台應用可通過在其他應用中調用應用服務,在背景執行任務。有關應用服務 API 的參考資訊,請參閱 Windows.ApplicationModel.AppService。

對 Windows 10 的程式包清單架構參考的更新包括已添加、已删除和已更改的元素。

有關該架構中所有元素、屬性和類型的參考資訊,請參閱元素層次結構。

Microsoft Surface Hub 是一個功能強大的團隊協作裝置,也是一個适用于 Universal Windows App(可在 Surface Hub 上本機運作也可在連接配接裝置上運作)的大螢幕平台。

Universal Windows App

建構你自己的應用(專為你的企業設計),進而充分利用大螢幕、觸摸和墨迹輸入以及相機和傳感器等豐富的闆載硬體。

請參閱 Universal Windows App 設計基礎知識中特定于 Surface Hub 的設計建議和 UX 指南。這些文檔介紹了面向 Universal Windows App 的響應式設計技術。

有關支援社群共享應用的詳細資訊,請參閱 SharedModeSettings。

有關墨迹輸入以及在 InkCanvas 控件上支援多點墨迹的詳細資訊,請參閱 Windows.UI.Input.Inking 和Windows.UI.Input.Inking.Core。

有關處理傳感器輸入的詳細資訊,請參閱內建裝置、列印機和傳感器。

Windows 10 引入了一個新方法 RequestAccessAsync 來提示使用者提供其位置的通路權限。

使用者可通過“設定”應用中的“位置隐私設定”,設定其位置資料的隐私。僅當出現以下情況時你的應用才可以通路使用者的位置:

“該裝置的位置”已打開(不适用于手機版 Windows 10)

位置服務設定中的“位置”已“打開”

在“選擇可以使用你的位置的應用”下,你的應用已設定為“打開”

在通路使用者的位置之前,務必調用 RequestAccessAsync。此時,你的應用必須在前台,并且 RequestAccessAsync 必須從 UI 線程中進行調用。除非使用者向你的應用授予通路其位置的權限,否則你的應用無法通路位置資料。

Windows.Devices.AllJoyn Windows 運作時命名空間引入了 Microsoft 實作的 AllJoyn 開放源代碼軟體架構和服務。這些 API 使通用 Windows 裝置應用可以在 Internet of Things (IoT) 應用場景中參與到 AllJoyn 驅動的其他裝置中。有關 AllJoyn C API 的詳細資訊,請在 AllSeen Alliance 處下載下傳相關文檔。

使用該版本中所包含的 AllJoynCodeGen 工具,生成可用于在裝置應用中啟用 AllJoyn 方案的 Windows 元件。

注意: Windows 10 IoT Core 目前适用于一類新的小型裝置,并且允許你使用 Windows 和 Visual Studio 建立“物聯網”(IoT) 裝置。了解有關 Windows IoT 的詳細資訊,網址為 WindowsOnDevices.com

你可以使用一個統一的 API 組,在裝置系列(包括移動裝置)上通過基于 XAML 的 UWP 應用進行列印。現在,你可以從 Windows.Graphics.Printing 和 Windows.UI.Xaml.Printing 命名空間使用熟悉的與列印相關的 API,将列印添加到你的移動應用。

通過 Windows.Devices.Power 命名空間中的電池 API,你的應用可了解連接配接到正在運作該應用的裝置的所有電池的詳細資訊。

通過建立 Battery 對象來表示單個電池控制器或聚合的所有電池控制器(在它們分别由 FromIdAsync 或 AggregateBattery建立後)。

使用 GetReport 方法傳回 BatteryReport 對象,該對象可訓示相應電池的充電、容量和狀态。

新的 Windows.Devices.Midi 命名空間允許你建立以下内容:

可以與外部 MIDI 裝置通信的應用。

可直接與 Microsoft GS MIDI 軟體合成��通信的應用和外部裝置。

多個用戶端同時通路單個 MIDI 端口的場景。

Windows.Devices.Sensors.Custom 命名空間允許硬體開發人員定義新的自定義傳感器類型,例如 CO2 傳感器。

使用主機卡模拟,可實作作業系統中所托管的 NFC 卡片模拟服務,并且仍然可以通過 NFC 射頻硬體與外部讀取器通信。

實作背景任務需通過 NFC 模拟智能卡。若要觸發背景任務,請使用 SmartCardTrigger 類。

SmartCardTriggerType 枚舉中的 EmulatorHostApplicationActivated 值會讓你的應用知道 HCE 事件已發生。

Windows 10 中的 DirectX 12 在 DirectX 的核心處引入了下一代版本的 Microsoft Direct3D,即 3D Graphics API。Direct3D 12 Graphics 能使低級别、類似控制台的 API 發揮效率和性能。Direct3D 12 現在比以往更快、更有效。它提供更豐富的場景、更多的對象、更複雜的效果,并且能更好地利用現代圖形硬體。

在通用 Windows 應用中,可将新的 SoftwareBitmapSource 類型用作 XAML 圖像源。這可将未編碼的圖像傳遞到 XAML 架構,進而立即顯示在螢幕上,同時避免 XAML 架構對圖像進行編碼。你可以實作更快速的圖像呈現,如直接通過相機呈現低延遲照片、使用自定義圖像解碼器、從 DirectX 圖面捕獲幀,或者甚至從零開始建立記憶體中圖像并直接使用 XAML 呈現所有這些圖像,延遲和記憶體開銷均較低。

在通用 Windows 應用中,XAML 具有全新 Transform3D API,它可用于将透視轉換應用到 XAML 樹(或場景),後者再根據該單一場景範圍的轉換(或相機)來轉換所有 XAML 子元素。雖然在以前,你可以通過使用 MatrixTransform 和複雜的數學運算來實作此轉換,但是 Transform3D 顯著地簡化了此效果,同時還可以動畫方式呈現該效果。有關詳細資訊,請參閱 UIElement.Transform3D 屬性、Transform3D、CompositeTransform3D 和 PerspectiveTransform3D。

你可以使用新的 AdaptiveMediaSource 類将自适應視訊流功能添加到你的應用。通過将對象指向流清單檔案對其進行初始化。受支援的清單格式包括 HTTP 實時流 (HLS) 和基于 HTTP 的動态自适應流 (DASH)。一旦将對象綁定到 XAML 媒體元素,将開始自适應播放。可以在适當情況下查詢和設定流的屬性,例如可用比特率、最小和最大比特率。

使用媒體基礎轉換 (MFT) 的 Windows 應用現在可以使用媒體基礎轉換代碼視訊處理器 (XVP) 來轉換、縮放和轉化原始視訊資料:

新 MF_XVP_CALLER_ALLOCATES_OUTPUT 屬性支援輸出到調用方配置設定的紋理,即使在 Microsoft DirectX 視訊加速 (DXVA) 模式下也是如此。

新 IMFVideoProcessorControl2 接口允許你的應用啟用硬體效果、查詢支援的硬體效果以及替代由視訊處理器執行的旋轉操作。

新 MediaProcessingTrigger API 讓你的應用在背景任務中執行媒體轉碼,這樣即使目前台應用已終止,也可以繼續進行轉碼操作。

在通用 Windows 應用中,MediaElement 将播放包含多個流的内容,即使其中一個流具有解碼錯誤,隻要媒體内容包含至少一個有效流即可。例如,如果包含音頻流和視訊流的内容中的視訊流失敗,MediaElement 仍将播放音頻流。 PartialMediaFailureDetected會通知你流内的其中一個流無法解碼。它還允許你知道哪種類型的流失敗,以便你可以在 UI 中反映該資訊。如果在媒體流内的所有流失敗,将引發 MediaFailed 事件。

MediaElement 具有新的 SetPlaybackSource 方法,可支援自适應視訊流。若要将你的媒體源設定為 AdaptiveMediaSource,請使用此方法。

“MediaElement 和圖像”控件具有新的 GetAsCastingSource 方法。你可以使用此方法,以程式設計方式将任何媒體或圖像元素中的内容發送到更多遠端裝置,如 Miracast、藍牙和 DLNA。當你将 MediaElement 的 AreTransportControlsEnabled 設定為 true 時,此功能将自動啟用。

ISystemMediaTransportControls 接口和相關的 API 允許桌面應用與内置的系統媒體傳輸控件互動。這包括使用傳輸控件按鈕響應使用者互動,以及更新傳輸控件顯示,以顯示有關目前正在播放的媒體内容的中繼資料。

新的 WIC 方法 IWICJpegFrameEncode 和 IWICJpegFrameDecode 支援 JPEG 圖像的編碼和解碼。你現在還可以編制圖像資料的索引,它以較大的記憶體占用為代價提供對大型圖像的高效随機通路。

新 MediaOverlay 和 MediaOverlayLayer API 更便于向媒體組合添加靜态或動态媒體内容的多個層。可以為每個層調整不透明度、位置和計時,你甚至可以為輸入層實作你自己的自定義複合器。

Windows.Media.Effects 命名空間提供了簡單、直覺的架構,以便将效果添加到音頻和視訊流。架構包含可以實作建立自定義的音頻和視訊效果并将它們插入到媒體管道的基本接口。

套接字更新包括:

套接字代理。套接字代理可以代表處于應用生命周期中任意狀态的應用建立和關閉套接字連接配接。這使應用和它們提供的服務更容易被發現。例如,通過套接字代理,Win32 服務仍可接受傳入的套接字連接配接,即便是該服務不在運作也是如此。

吞吐量改進。套接字吞吐量已針對使用 Windows.Networking.Sockets 命名空間的應用進行了優化。

你可以利用 Windows.Networking.BackgroundTransfer 命名空間中的新 API 注冊後續處理的任務組。這樣你的應用便可以立即根據背景傳輸的成功或失敗執行操作,而不是等待下次使用者恢複它,即使該應用不在前台運作也是如此。

借助 Windows.Devices.Bluetooth.Advertisement 命名空間,你的應用可以發送、接收并篩選藍牙 LE 廣告。

更新裝置代理,以實作在不離開應用的情況下與裝置比對。除此之外,Windows.Devices.WiFiDirect 命名空間還可以讓某個裝置能夠檢測到其他裝置,并讓該裝置偵聽傳入的連接配接通知。

注意在此版本中,Wi-Fi Direct 功能改進未内置于 UX 中,并且它們僅支援一鍵配對。此外,此版本僅支援一個活動連接配接。

在調試會話期間,轉換 JSON 對象時,Windows.Data.Json 命名空間現在能更好地支援已有的标準定義和開發人員體驗。

Windows.Security.Cryptography 命名空間中的新 API 支援橢圓曲線密碼 (ECC),後者是基于有限域上橢圓曲線的公共密鑰加密實作。在算法上,ECC 比 RSA 更為複雜,它提供更小的密鑰大小、可減少記憶體占用并且可提高性能。它提供 Microsoft 服務并且向客戶提供 RSA 密鑰和 NIST 準許曲線參數的替代方法。

Microsoft Passport 是身份驗證的替代方法,它使用非對稱加密和手勢來替代密碼。“憑據”命名空間中的類(如KeyCredentialManger)讓開發人員可以輕松通過 Microsoft Passport 來建立應用程式,而無需使用複雜的加密或生物識别。

Microsoft Passport for Work 是使用 Azure Active Directory 帳戶登入 Windows 的替代方法,它無需使用密碼、智能卡和虛拟智能卡。你可以選擇是禁用還是啟用此政策設定。

令牌是一個新型的身份驗證架構,可讓應用更加輕松地連接配接到聯機辨別提供程式(例如 Facebook)。通過諸如帳戶使用者名和密碼管理以及簡化的 UI 等功能,将大幅度改善為使用者提供的身份驗證體驗。

現在,當節電模式處于啟用或未啟用狀态時,你的 Windows 桌面應用程式将得到通知。通過響應電源條件更改,你的應用程式将有機會幫助延長電池使用時間。

GUID_POWER_SAVING_STATUS: 将此新的 GUID 與 PowerSettingRegisterNotification 函數結合使用,以便在節電模式處于啟用或未啟用狀态時收到通知。

SYSTEM_POWER_STATUS: 已将此結構更新為支援節電模式。第四個成員 <code>SystemStatusFlag</code>(以前稱為 Reserved1)現在訓示節電模式是否處于啟用狀态。使用 GetSystemPowerStatus 函數檢索指向此結構的指針。

你可以使用版本幫助程式函數确定作業系統的版本。在 Windows 10 中,這些幫助程式函數包括一個新函數 IsWindows10OrGreater。如果你想要确定系統版本,則應該使用幫助程式函數,而不是使用已棄用的 GetVersionEx 和 GetVersion 函數。有關如何擷取系統版本的詳細資訊,請參閱擷取系統版本。

如果你使用已棄用的 GetVersionEx 或 GetVersion 函數在 OSVERSIONINFOEX 或 OSVERSIONINFO 結構中擷取版本資訊,請注意,這些結構包含的版本号将從适用于 Windows 8.1 和 Windows Server 2012 R2 的 6.3 版增加到适用于 Windows 10 的 10.0 版。有關作業系統版本号的詳細資訊,請參閱作業系統版本。

你還需要在你的應用程式中明确定向到 Windows 8.1 或 Windows 10,以使用 GetVersionEx 或 GetVersion 函數擷取有關這些版本的正确版本資訊。有關如何針對這些版本的 Windows 定向你的應用程式的資訊,請參閱針對 Windows 定向你的應用程式。

Windows.System 命名空間中的新 API 使你可以輕松通路使用者相關資訊,例如其使用者名和頭像。它還提供響應諸如登入和登出等使用者事件的功能。

對 Windows.System 中記憶體分析 API 的支援已擴充至所有平台,并且其整體功能已認證新的類和函數進行增強。

作為應用釋出者,你可以注冊你的應用,以便通過将擴充添加到應用清單,與其他應用共享存儲檔案夾。然後,調用Windows.Storage.ApplicationData.GetPublisherCacheFolder 方法來擷取共享的存儲位置。

Windows 運作時應用的強大安全模型通常可防止應用在它們自己間共享資料。但是,在來自同一個釋出者的應用基于每個使用者共享檔案和設定時,這可能會很有用。

Visual Studio 具備全新的 Live Visual Tree 功能。你可以在調試時用它來快速地了解應用可視化樹的狀态,并發現設定元素屬性的方式。它還可用于在應用運作時更改屬性值,以便在無需重新啟動的情況下進行調整和實驗。

跟蹤日志記錄是适用于使用者模式應用和核心模式驅動程式的全新事件跟蹤 API;它建構在 Windows 事件跟蹤 (ETW) 的基礎之上。此 API 提供了一種簡化方式來檢測代碼和在結構資料中包括事件,而無需要求單獨的檢測清單 XML 檔案。

WinRT、.NET 和 C/C++ 跟蹤日志記錄 API 可為不同的開發人員閱聽人提供服務。

通用 Windows 平台現已支援針對長篇聽寫場景的連續語音識别。請參閱“語音互動”文檔中的“如何啟用連續聽寫”。

新 Windows.ApplicationModel.DataTransfer.DragDrop 命名空間為通用 Windows 應用提供拖放功能。以前,桌面程式中的常見拖放方案(例如将文檔從檔案夾拖動到需要附加它的 Outlook 電子郵件中)不适用于通用 Windows 應用。通過使用這些新的 API,你的應用可以讓使用者輕松地在不同的通用 Windows 應用和桌面之間移動資料。

為支援在應用間拖放,已向 XAML 添加以下新 API:

ListViewBase.DragItemsCompleted

UIElement: CanDrag、DragStarting、StartDragAsync、DropCompleted

DragOperationDeferral、DragUI、DragUIOverride

DragEventArgs: AcceptedOperation、DataView、DragUIOverride、GetDeferral、Modifiers

DragItemsCompletedEventArgs、DropCompletedEventArgs、DragStartingEventArgs

對于适用于桌面裝置系列的 UWP 應用,現在可以将 ApplicationViewTitleBar 類與 ApplicationView.TitleBar 屬性和Window.SetTitleBar 方法結合使用,以便将預設 Windows 标題欄内容替換為你自己的自定義 XAML 内容。你的 XAML 将被視為“系統鑲邊”,是以 Windows(而不是你的應用)将處理輸入事件。這意味着使用者仍可拖動視窗并調整大小,即使在單擊自定義标題欄内容時也是如此。

Internet Explorer 中引入了邊緣模式,這是一種新的“動态”文檔模式,旨在實作與其他現代浏覽器和現代 Web 内容的最大互操作性。正在逐漸将此實驗模式推廣給随機選擇的一組 Windows 10 使用者。你可以通過新的 IE about:flags 機制手動啟用或禁用邊緣模式。有關詳細資訊,請參閱:

邊緣模式實際應用 - 下一步是幫助 Web 正常工作

Internet Explorer for Windows 10 開發人員指南

WebView 控件與新的 Edge 浏覽器使用相同的呈現引擎。這提供了最精确、最符合标準的 HTML 呈現模式。

若要允許處理和顯示單獨背景線程上的 Web 内容,可以指定 WebView.ExecutionMode。這可以改進某些特定方案的性能。

新 WebView.UnsupportedUriSchemeIdentified 事件可用于确定你的應用處理不受支援的 URI 方案的方式。若要讓你的應用提供用于不受支援的 URI 方案的自定義處理方式,你可以處理此事件。

有關 HTML WebView 控件,請參閱 MSWebViewUnsupportedUriSchemeIdentified 事件。

新 WebView.NewWindowRequested 事件使你可以在 WebView 中的腳本請求新浏覽器視窗時做出響應。

有關 HTML WebView 控件,請參閱 MSWebViewNewWindowRequested 事件。

新 WebView.PermissionRequested 事件允許 WebView 内容使用豐富的全新 HTML5 API,它們需要獲得特殊的使用者權限,如地理位置。

有關 HTML WebView 控件,請參閱 MSWebViewPermissionRequested 事件。

新 WebView.UnviewableContentIdentified 事件使你可以在 WebView 導航到 PDF 檔案或 Office 文檔等非 Web 内容時做出響應

有關 HTML WebView 控件,請參閱 MSWebViewUnviewableContentIdentified 事件。

你可以通過調用新 WebView.AddWebAllowedObject 方法,将 WinRT 對象注入 XAML WebView 中,然後通過托管在該 WebView 中的可信 JavaScript 來調用其函數。例如,Web 内容可以通過請求其父應用調用 ToastNotificationManager WinRT API,顯示系統通知。

有關 HTML WebView 控件,請參閱 addWebAllowedObject 方法。

當使用者與 XAML WebView 中的 Web 内容互動時,WebView 控件将根據該使用者的會話緩存資料。若要清除此緩存,可以調用新的ClearTemporaryWebDataAsync 方法。例如,你可以在某位使用者登出應用後清除緩存,這樣另一位使用者便無法通路上一會話中的任何資料。