Windows 10 内部版本 10240 和更新的 SDK 提供了工具、功能和体验,旨在打造出色的通用 Windows 平台应用程序。
以下是对 Windows 10 内部版本 10240(也称为 Windows 10 版本 1507)中每个新增功能的逐项查看。
自适应布局
功能 / 特点 | DESCRIPTION |
---|---|
为定制内容提供多种视图 | XAML 为定义共享相同代码文件的定制视图(.xaml 文件)提供了新的支持。 这样,你可以更轻松地创建和维护针对特定设备系列或方案定制的不同视图。 如果应用具有不同的 UI 内容、布局或导航模型,这些模型在不同方案中大相径庭,请生成多个视图。 例如,您可以在移动应用中使用适合单手操作的导航的 Pivot,而在桌面应用中使用为鼠标操作而优化的导航菜单的 SplitView。 |
状态触发器 | 使用新的 VisualState.StateTriggers 功能,可以根据窗口高度/宽度或自定义触发器有条件地设置属性。 以前,必须在代码中处理 Window SizeChanged 事件,并调用 VisualStateManager.GotoState。 |
制定 | 使用新的 VisualState.Setters 语法,可以使用简化的标记在 visualStateManager中定义属性更改。 以前,必须使用 Storyboard 并创建动画来应用属性更改,例如将 StackPanel 的方向从水平更改为垂直。 在通用 Windows 应用中,可以使用这个更简单的 Setter 语法:<setter target=“stackPanel1.Orientation” value=“Vertical” /> |
XAML 功能
功能 / 特点 | DESCRIPTION |
---|---|
已编译的数据绑定 (x:Bind) | 在通用 Windows 应用中,可以使用 x:Bind 属性启用的新基于编译器的绑定机制。 基于编译器的绑定在编译时强类型化和处理,这两者都更快,并在绑定类型不匹配时提供编译时错误。 由于绑定被转化为已编译的应用程序代码,现在您可以在 Visual Studio 中单步调试代码,从而诊断特定的绑定问题。 还可以使用 x:Bind 绑定到方法,如下所示:<textblock text=“{x:Bind Customer.Address.ToString()}”/> 对于典型的绑定方案,可以使用 x:Bind 代替 Binding,并提高性能和可维护性。 |
列表的声明性增量呈现 (x:Phase) | 在通用 Windows 应用中,新的 x:Phase 属性允许你使用 XAML 而不是代码执行列表的增量呈现或分阶段呈现。 当平移包含复杂项的长列表时,你的应用可能无法快速呈现项目,以跟上平移的速度,从而为用户提供糟糕的体验。 分阶段呈现允许你在列表项中指定各个元素的呈现优先级,因此,在快速平移方案中,仅呈现列表项最重要的部分。 这将为你的用户生成更流畅的平移体验。 在 Windows 8.1 中,可以处理 ContainerContentChanging 事件,并编写代码以分阶段呈现列表项。 在 UWP 应用中,可以使用 x:Phase 属性以声明方式完成分阶段呈现。 与编译的绑定 x:Bind 结合使用,x:Phase 使你可以轻松地为数据模板中的每个绑定元素指定呈现优先级。 平移时,渲染项目的工作会根据阶段进行时间切片,从而支持逐步渲染项目。 |
UI 元素的延迟加载(x:deferLoadstrategy) | 在通用 Windows 应用中,新的 x:deferLoadstrategy 指令允许你指定要延迟加载的用户界面部分,从而提高启动性能并减少应用的内存使用量。 例如,如果应用 UI 有一个用于数据验证的元素,仅在输入了不正确的数据时显示,则可以延迟加载该元素,直到需要该元素。 然后,加载页面时不会创建元素对象;而是仅在出现数据错误且需要添加到页面可视化树时创建它们。 |
SplitView | 使用新的 SplitView 控件,可以轻松显示和隐藏暂时性内容。 它通常用于顶级导航场景,例如“汉堡菜单”,其中导航内容平时隐藏,用户操作后根据需要滑入显示。 |
RelativePanel | RelativePanel 是一个新的布局面板,可用于定位和对齐子对象彼此或父面板。 例如,可以指定某些文本应始终放置在面板左侧,而按钮应始终与文本下方对齐。 创建没有明确线性模式的用户界面时,请使用 ReleativePanel,该模式将调用使用 StackPanel 或 Grid。 |
日历视图 | 使用 CalendarView 控件可以轻松地使用可自定义的基于月份的视图查看和选择日期范围。 CalendarView 支持最小、最大值和阻止日期等功能,以限制可以选择哪些日期。 还可以设置自定义密度条,这些密度条可用于在特定日期显示计划的一般“完整性”。 |
日历日期选择器 | CalendarDatePicker 是一个下拉控件,优化用于从 CalendarView 中选择单个日期,当上下文信息(如星期几或日历的繁忙程度)很重要时。 它类似于 DatePicker 控件,但 DatePicker 已针对选取已知日期(如出生日期)进行优化。 |
MediaTransportControls | 使用新的 MediaTransportControls 类可以更轻松地自定义 MediaElement的传输控件。 在 Windows 8.1 中,可以启用 MediaElement 的内置传输控件,或创建自己的名为 MediaElement 方法的传输控件。 现在可以使用 MediaTransportControls 的内置功能,并且仍可以轻松自定义外观以适应你的应用。 |
属性更改通知 | 在通用 Windows 应用中,你可以侦听 DependencyObject 上的属性更改,即使对于没有相应更改事件的属性也是如此。 通知的运行方式类似于事件,但实际上是以回调的形式呈现。 回调采用发送方参数,就像事件处理程序一样,但不采用事件参数。 相反,仅传递属性标识符以指示哪个属性。 利用此信息,应用可以为多个属性通知定义单个处理程序。 有关详细信息,请参阅 RegisterPropertyChangedCallback 和 UnregisterPropertyChangedCallback。 |
地图 | MapControl 类已更新,以提供空中 3D 图像和街景视图。 这些新功能和早期映射功能现在可用于通用 Windows 应用。 使用以下 API 将映射添加到应用:Windows.UI.Xaml.Controls.Maps 和 Windows.Services.Maps。 若要立即在通用 Windows 应用中使用这些 API,请从 必应地图开发人员中心请求密钥。 有关详细信息,请参阅 如何对地图应用进行身份验证。 此外,对于 Windows 10,电脑和手机用户可以从“设置”应用下载脱机地图。 当没有互联网连接时,MapControl 会使用脱机地图来显示地图(如果可用)。 |
输入按钮映射 | Windows.UI.Xaml.Input.KeyEventArgs 类具有新的 OriginalKey 属性,该属性与对 Windows.System.VirtualKey的相应更新一起,使您能够获取与键盘输入事件关联的原始、未映射的输入按钮。 |
上墨 | 由于 InkCanvas 控件和底层的 InkPresenter 类,使用 C++、C# 或 Visual Basic 的 Windows 运行时应用中的强大墨迹功能现在变得更加简单。 InkCanvas 控件定义了一块用于绘制和呈现墨迹笔划的覆盖区域。 此控件(输入、处理和呈现)的功能来自 InkPresenter、InkStroke、InkRecognizers以及 InkSynchronizer 类。 重要提示:使用 JavaScript 的 Windows 应用中不支持这些类。 |
更新的 XAML 功能
功能 / 特点 | DESCRIPTION |
---|---|
CommandBar 和 AppBar 更新 |
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 旨在与全屏应用一起使用,并使用边缘手势进行调用。 更新处理控制设置中的一些问题,例如窗口化应用程序和 Windows 10 中缺少边缘手势功能。 Hidden AppBar.ClosedDisplayMode(以前仅在 Windows Phone 上)现在在所有设备系列上都受支持,让你可以在不同级别的命令提示之间进行选择。 默认情况下,AppBar 会显示一个简单提示,以确保在将 Windows 8.1 应用升级到通用 Windows 应用时的一致性,因为在该平台中已不再支持边缘手势功能。 |
GridView 更新 | 在 Windows 10 之前,默认 GridView 布局方向在 Windows 上水平,在 Windows Phone 上垂直方向。 在 UWP 应用中,GridView 默认为所有设备系列使用垂直布局,以确保具有一致的默认体验。 |
AreStickyGroupHeadersEnabled 属性 | 在 ListView 或 GridView中显示分组数据时,组标头现在在滚动列表时保持可见。 这在大型数据集中非常重要,其中标头为用户正在查看的数据提供上下文。 但是,如果每个组中只有几个元素,你可能希望标题和项目一起滚动到屏幕之外。 可以在 ItemsStackPanel 和 ItemsWrapGrid 上设置 AreStickyGroupHeadersEnabled 属性来控制此行为。 |
GroupHeaderContainerFromItemContainer 方法 | 在 ItemsControl中显示分组数据时,可以调用 GroupHeaderContainerFromItemContainer 方法以获取对组父标头的引用。 例如,如果用户删除组中的最后一项,则可以获取对组标头的引用,并同时删除项和组标头。 |
ChoosingGroupHeaderContainer 事件 | 新的 ChoosingGroupHeaderContainer 事件在 ListViewBase 上,允许你在 ListView 或 GridView 的组标头上设置状态。 例如,您可以处理这一事件来设置组标头上的 AutomationProperties.Nameproperty,以便在辅助技术中表示组。 |
ChoosingItemContainer 事件 | 在 ListViewBase 上的新 ChoosingItemContainer 事件可让你对 ListView 或 GridView中的 UI 虚拟化实现更高程度的控制。 将此事件与 ContainerContentChanging 事件结合使用,以维护自己的回收容器队列,以便根据需要进行绘制。 例如,如果数据源由于筛选而重置,则可以以其数据快速匹配一组已创建的视觉对象(ItemContainers),以实现最佳性能。 |
列表滚动虚拟化 | XAML ListView 和 GridView 控件具有新的 ListViewBase.ChooseingItemContainer 事件,当数据收集中发生更改时,该事件可提高控件的性能。 系统现在不再完整重置列表(重演入口动画),而是维护当前视图中的项目及其焦点和选择状态;视口中的新项和已删除项将流畅地进行进出动画。 更改容器不被销毁的数据收集方式后,应用可以快速将任何“旧”项与其先前的容器匹配,并跳过容器生命周期重写方法的进一步处理。 仅处理“新”项目,并将其与回收容器或新容器相关联。 |
SelectRange 方法和 SelectedRanges 属性 | 在通用 Windows 应用中,ListView 和 GridView 控件现在允许你根据项索引范围而不是项对象引用来选择项。 这是描述项目选择的更高效方法,因为不需要为每个选定项创建项对象。 有关详细信息,请参阅 ListViewBase.SelectedRanges、ListViewBase.SelectRange,以及 ListViewBase.DeselectRange。 |
新的 ListViewItemPresenter API | ListView 和 GridView 使用项目呈现器提供默认的选择和聚焦视觉效果。 在 UWP 应用中,ListViewItemPresenter 和 GridViewItemPresenter 具有新的属性,可用于进一步自定义列表项的视觉对象。 新属性包括 CheckBoxBrush、CheckMode、FocusSecondaryBorderBrush、PointerOverForeground、PressedBackground 和 SelectedPressedBackground。 |
SemanticZoom 更新 |
SemanticZoom 控件现在对所有设备系列中的 UWP 应用具有一致的行为。 在放大视图和缩小视图之间切换的默认操作是点击放大视图中的组标题。 这与 Windows Phone 8.1 上的行为相同,但与 Windows 8.1 不同,因为在 Windows 8.1 中使用捏合手势进行缩放。 若要使用捏合缩放来更改视图,请在 SemanticZoom 的内部 ScrollViewer 上将 ScrollViewer.ZoomMode设置为“Enabled”。 对于通用 Windows 应用,缩小的视图将替换放大视图,其大小与它所替换的视图相同。 这与 Windows 8.1 上的行为相同,但与 Windows Phone 8.1 不同。在 Windows Phone 8.1 中,缩小视图占据了屏幕的整个尺寸,并覆盖在所有其他内容之上。 |
DatePicker 和 TimePicker 更新 | DatePicker 和 TimePicker 控件现在对所有设备系列中的通用 Windows 应用都有一个一致的实现。 它们还拥有用于 Windows 10 的新外观。 控件的弹出窗口部分现在在所有设备上都使用 DatePickerFlyout 和 TimePickerFlyout 控件。 这与 Windows Phone 8.1 上的行为相同,但与使用 ComboBox 控件的 Windows 8.1 不同,这是一种变化。 使用浮出控件可以轻松创建自定义的日期和时间选取器。 |
新的 ScrollViewer 接口 API | ScrollViewer 具有新的 DirectManipulationStarted 和 DirectManipulationCompleted 事件,用于在触摸平移开始和停止时通知你的应用。 可以处理这些事件,使 UI 与这些用户操作协调。 |
MenuFlyout 功能更新 | 在通用 Windows 应用中,有一些新的 API 可让你更轻松地生成更好的上下文菜单。 新的 MenuFlyout.ShowAt 方法允许您指定浮出控件相对于另一个元素的显示位置。 (并且 MenuFlyout 甚至可以与应用的窗口边界重叠。使用新的 MenuFlyoutSubItem 类创建级联菜单。 |
ContentPresenter、Grid 和 StackPanel 的新边框属性 | 常见的容器控件具有新的边框属性,使你可以在它们周围绘制边框,而无需向 XAML 添加额外的 Border 元素。 ContentPresenter、Grid和 StackPanel 具有以下新属性:BorderBrush、BorderThickness、CornerRadius 和 Padding。 |
ContentPresenter 上的新文本 API | ContentPresenter 提供了新的 API,可让你更好地控制文本显示:LineHeight、LineStackingStrategy、MaxLines 和 TextWrapping。 |
系统焦点视觉效果 | XAML 控件的焦点视觉对象现在由系统创建,而不是在控件模板中声明为 XAML 元素。 通常不需要移动设备上的焦点视觉对象,并根据需要让系统创建和管理它们可提高应用性能。 如果需要更好地控制焦点视觉对象,则可以替代系统行为并提供定义焦点视觉对象的自定义控件模板。 有关详细信息,请参阅 UseSystemFocusVisuals 和 IsTemplateFocusTarget。 |
PasswordBox.密码显示模式 | 在通用 Windows 应用中,PasswordRevealMode 属性替换 IsPasswordRevealButtonEnabled 属性,以跨设备系列提供一致的行为。 警告:在 Windows 10 之前,默认情况下未显示密码显示按钮;在通用 Windows 应用中,它默认显示。 如果应用的安全性要求始终隐藏密码,请确保将 PasswordRevealMode 设置为 Hidden。 |
控件.启用文本缩放系数 | Windows Phone 8.1 上提供的 IsTextScaleFactorEnabled 属性现在适用于所有设备系列中的通用 Windows 应用。 |
自动建议框 (AutoSuggestBox) | 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 基于屏幕大小和输入类型提供自适应行为。 您可以设置透视控件的样式,以提供类似于选项卡的行为,并在每个透视项中提供不同的信息视图。 |
文本
功能 / 特点 | DESCRIPTION |
---|---|
Windows 文本核心应用程序接口 | 新的 Windows.UI.Text.Core 命名空间具有客户端-服务器系统,该系统将键盘输入的处理集中到单个服务器。 可以使用它来操作自定义文本输入控件的编辑缓冲区。 文本输入服务器通过应用和服务器之间的异步通信通道,确保文本输入控件的内容及其自己的编辑缓冲区的内容始终同步。 |
矢量图标 | Glyphs 元素具有新的 IsColorFontEnabled,ColorFontPalleteIndex 属性来支持颜色字体;现在可以使用字体文件呈现基于字体的图标。 使用 ColorFontPalleteIndex 切换调色板时,可以使用不同的颜色集呈现单个图标;例如,显示图标的启用和禁用版本。 |
输入法编辑器窗口事件 | 用户有时会通过输入法编辑器输入文本,该编辑器显示在文本输入框正下方的窗口中(通常是东亚语言)。 可以在 TextBox 和 RichEditBox 上使用 CandidateWindowBoundsChanged 事件和 DesiredCandidateWindowAlignment 属性,以提升应用 UI 与 IME 窗口的兼容性和表现。 |
文本组合事件 | TextBox 和 RichEditBox 拥有新的事件,以便在使用输入法编辑器进行文本输入时通知应用程序:TextCompositionStarted、TextCompositionEnded 和 TextCompositionChanged。 可以处理这些事件,以便将应用代码与 IME 文本组合过程协调。 例如,可以为东亚语言实现内联自动完成功能。 |
改进了双向文本的处理 | XAML 文本控件具有新的 API,可改进双向文本的处理,从而更好地实现各种输入语言的文本对齐和段落方向性。 TextReadingOrder 属性的默认值已更改为 DetectFromContent,因此默认启用对检测阅读顺序的支持。 TextReadingOrder 属性也已添加到 PasswordBox、RichEditBox 和 TextBox。 可以将文本控件的 TextAlignment 属性设置为新的 DetectFromContent 值,以启用根据内容自动检测对齐方式的功能。 |
文本呈现 | 在 Windows 10 中,XAML 应用中的文本现在呈现,在大多数情况下,速度几乎是 Windows 8.1 的两倍。 在大多数情况下,你的应用将受益于此改进,而无需进行任何更改。 除了更快的呈现,这些改进还减少了 XAML 应用的典型内存消耗 5%。 |
应用程序模型
功能 / 特点 | DESCRIPTION |
---|---|
Cortana | 使用在外部应用程序中启动和执行单个操作的语音命令扩展 Cortana 的基本功能。 通过集成应用的基本功能,并为用户提供中心入口点来完成大部分任务而无需直接打开应用,Cortana 可以充当应用和用户之间的联络人。 在许多情况下,这可以节省用户大量时间和精力。 了解如何 将应用集成到 Cortana 画布。 如果需要想法,可以参考通用 Windows 应用的设计基础知识 和特定于 Cortana 的设计建议与 UX 指南。 |
文件资源浏览器 | 新的 Windows.System.Launcher.LaunchFolderAsync 方法使你能够启动文件资源管理器并显示你指定的文件夹的内容。 |
共享存储 | 新的 Windows.ApplicationModel.DataTransfer.SharedStorageAccessManager 类及其方法允许你在使用 URI 激活启动其他应用时传递共享令牌,从而与其他应用共享文件。 目标应用兑换令牌以获取源应用共享的文件。 |
设置 | 使用 ms-settings 协议,通过 LaunchUriAsync 方法显示内置设置页面。 例如,以下代码显示 Wi-Fi 设置的页面:布尔型结果 = await Launcher.LaunchUriAsync(new Uri("ms-settings://network/wifi")); 有关可以显示的设置页的列表,请参阅 如何使用 ms-settings 协议显示内置设置页。 |
应用间通信 | Windows 10 中的新 应用到应用通信 API 使 Windows 应用程序(以及 Windows Web 应用程序)能够相互启动并交换数据和文件。 使用这些新 API,现在可以无缝处理需要用户使用多个应用程序的复杂任务。 例如,你的应用可以启动社交网络应用以选择联系人,或启动结帐应用程序以完成付款过程。 |
应用服务 | 应用服务是应用向 Windows 10 中的其他应用提供服务的一种方法。 应用服务采用后台任务的形式。 前台应用可以在另一个应用中调用应用服务以在后台执行任务。 有关应用服务 API 的参考信息,请参阅 Windows.ApplicationModel.AppService。 |
应用包清单 | Windows 10 的 包清单架构 引用的更新包括已添加、删除和更改的元素。 有关架构中所有元素、属性和类型的参考信息,请参阅 元素层次结构。 |
设备
功能 / 特点 | DESCRIPTION |
---|---|
Microsoft Surface Hub | Microsoft Surface Hub 是一款强大的团队协作设备,也是一个大屏幕平台,支持从 Surface Hub 或连接设备上原生运行的通用 Windows 应用。 构建专为你的企业设计的应用程序,充分利用大屏幕、触摸和墨迹输入功能,以及丰富的内置硬件,如相机和传感器。 查看特定于 Surface Hub 的设计建议和 UX 指南,通用 Windows 应用的设计基础知识。 这些文档介绍了通用 Windows 应用的响应式设计技术。 有关支持公共共享应用的详细信息,请参阅 SharedModeSettings。 有关新 InkCanvas 控件的多点输入墨迹支持的详细信息,请参阅 Windows.UI.Input.Inking 和 Windows.UI.Input.Inking.Core。 有关处理传感器输入,请参阅 集成设备、打印机和传感器。 |
位置 | Windows 10 引入了一个新方法来提示用户访问其位置的权限,RequestAccessAsync。 用户在 设置 应用中使用 位置隐私设置 来设置其位置数据的隐私。 仅当以下情况下,应用才能访问用户的位置:打开此设备的 位置(不适用于 Windows 10 手机),位置服务设置“位置”处于打开状态,在“选择可以使用你的位置的应用”下,你的应用将设置为打开。 访问用户位置之前,请务必先调用 RequestAccessAsync。 此时,你的应用必须位于前台,并且必须从 UI 线程中调用 RequestAccessAsync。 在用户给予应用访问其位置的权限之前,你的应用无法访问位置数据。 |
AllJoyn |
Windows.Devices.AllJoyn Windows 运行时命名空间介绍了微软对 AllJoyn 开源软件框架与服务的实现。 这些 API 使通用 Windows 设备应用能够与其他设备一起参与 AllJoyn 驱动的物联网(IoT)方案。 欲了解 AllJoyn C API 的更多信息,请下载 AllSeen 联盟的文档。 使用此版本中包含的 AllJoynCodeGen 工具生成可用于在设备应用中启用 AllJoyn 方案的 Windows 组件。 注意: Windows 10 IoT 核心版现在可用于新型小型设备,允许你使用 Windows 和 Visual Studio 创建“物联网”(IoT)设备。 在 Windows 开发人员中心上详细了解 Windows IoT |
在移动设备上打印 API (XAML) | 有一组统一的 API,可用于跨设备系列(包括移动设备)从基于 XAML 的 UWP 应用进行打印。 现在,可以使用 Windows.Graphics.Printing 和 Windows.UI.Xaml.Printing 命名空间中熟悉的与打印相关的 API 将打印添加到移动应用。 |
电池 | Windows.Devices.Power 命名空间中的电池 API 可让你的应用了解有关连接到运行应用的设备的任何电池的详细信息。 创建 Battery 对象,以表示单个电池控制器或所有电池控制器的聚合(分别由 FromIdAsync 或 AggregateBattery创建)。 使用 GetReport 方法可返回 BatteryReport 对象,该对象指示相应电池的充电、容量和状态。 |
MIDI 设备 | 通过新的 Windows.Devices.Midi 命名空间,您可以创建 A=应用,这些应用可以与外部 MIDI 设备通信,应用和外部设备可以直接与 Microsoft GS MIDI 软件合成器进行通信,并且允许多个客户端同时访问单个 MIDI 端口的场景。 |
自定义传感器支持 | Windows.Devices.Sensors.Custom 命名空间允许硬件开发人员定义新的自定义传感器类型,例如 CO2 传感器。 |
基于主机的卡片仿真 (HCE) | 主机卡仿真使你能够实现 OS 中托管的 NFC 卡仿真服务,并且仍能够通过 NFC 无线电与外部读取器终端通信。 若要触发后台任务以通过 NFC 模拟智能卡,请使用 SmartCardTrigger 类。 SmartCardTriggerType 中的 EmulatorHostApplicationActivated 值 枚举使应用知道发生了 HCE 事件。 |
图形
功能 / 特点 | DESCRIPTION |
---|---|
DirectX | Windows 10 中的 DirectX 12 引入了下一版本的 Microsoft Direct3D,这是 DirectX 的核心 3D 图形 API。 Direct3D 12 图形技术 可以实现类似游戏主机低级 API 的效率和性能。 Direct3D 12 比以往更快、更高效。 它支持更丰富的场景、更多的对象、更复杂的效果,以及更好地使用现代图形硬件。 |
SoftwareBitmapSource | 在通用 Windows 应用中,可以使用新的 SoftwareBitmapSource 类型作为 XAML 图像源。 这样,便可以将未编码的图像传递到 XAML 框架,以立即在屏幕上显示,从而绕过 XAML 框架的图像解码。 你可以更快地实现图像渲染,例如,使用自定义图像解码器直接从相机渲染低延迟照片、从 DirectX 图面捕获帧,甚至从头开始创建内存中图像,以及以低延迟和低内存开销直接在 XAML 中呈现它们。 |
透视相机 | 在通用 Windows 应用程序中,XAML 引入了一种新的 Transform3D API 接口,可以将透视转换应用于整个 XAML 树(或场景),使该场景中所有的 XAML 子元素都根据一个全局转换(或摄像机)进行转换。 以前可以使用 MatrixTransform 和复杂数学执行此操作,但 Transform3D 大大简化了此效果,还使效果能够进行动画处理。 有关详细信息,请参阅 UIElement.Transform3D 属性、Transform3D、CompositeTransform3D和 PerspectiveTransform3D。 |
媒体
功能 / 特点 | DESCRIPTION |
---|---|
HTTP 直播流 | 可以使用新的 AdaptiveMediaSource 类向应用添加自适应视频流功能。 通过将对象指向流式处理清单文件来初始化该对象。 支持的清单格式包括 Http 实时流式处理(HLS)和基于 HTTP 的动态自适应流式处理(DASH)。 对象绑定到 XAML 媒体元素后,自适应播放将开始。 可以在适当的情况下查询和设置流的属性,例如可用、最小值和最大比特率。 |
媒体基础转码视频处理器(XVP)对媒体基础转换功能(MFTs)的支持 | 使用媒体基础转换(MFT)的 Windows 应用现在可以使用 媒体基础转码视频处理器(XVP)来转换、缩放和处理原始视频数据。新的 MF_XVP_CALLER_ALLOCATES_OUTPUT 属性即使在 Microsoft DirectX 视频加速(DXVA)模式下,也能输出到调用方分配为输出的纹理。 新的 IMFVideoProcessorControl2 接口允许应用启用硬件效果、查询支持的硬件效果,并替代视频处理器执行的旋转操作。 |
转码 | 新的 MediaProcessingTrigger API 允许应用在后台任务中执行媒体转码,因此即使前台应用已终止,转码操作也可以继续。 |
MediaElement 媒体失败事件 | 在通用 Windows 应用中,只要媒体内容包含至少一个有效流,MediaElement 也会播放包含多个流的内容,即使存在解码其中一个流的错误。 例如,如果包含音频和视频流的内容中的视频流失败,MediaElement 仍将播放音频流。 PartialMediaFailureDetected 通知您一个流中的某条流无法解码。 它还允许你了解流失败的类型,以便可以在 UI 中反映该信息。 如果媒体流中的所有流都失败,则会引发 MediaFailed 事件。 |
支持使用 MediaElement 进行自适应视频流式处理 | MediaElement 拥有新的 SetPlaybackSource 方法来支持自适应视频流。 使用此方法将媒体源设置为 AdaptiveMediaSource。 |
使用 MediaElement 和 Image 进行投放 | MediaElement 和 Image 控件具有新的 GetAsCastingSource 方法。 可以使用此方法以编程方式将内容从任何媒体或图像元素发送到更广泛的远程设备,例如 Miracast、蓝牙和 DLNA。 在 MediaElement 上将 AreTransportControlsEnabled 设置为 true 时,将自动启用此功能。 |
桌面应用的媒体传输控件 | ISystemMediaTransportControls 接口和相关 API 允许桌面应用与内置系统媒体传输控件进行交互。 这包括响应用户与传输控件按钮的交互,以及更新传输控件显示以显示有关当前播放媒体内容的元数据。 |
随机访问 JPEG 编码和解码 | 新的 WIC 方法 IWICJpegFrameEncode 和 IWICJpegFrameDecode 启用 JPEG 图像的编码和解码。 现在,还可以启用图像数据的索引,该数据提供对大型图像的有效随机访问,代价是占用更大的内存。 |
媒体合成的叠加层 | 新的 MediaOverlay 和 MediaOverlayLayer API 使向媒体合成添加多层静态或动态媒体内容变得容易。 可针对每个层调整不透明度、位置和时间,甚至可以为输入层实现自己的自定义合成器。 |
新的效果框架 | Windows.Media.Effects 命名空间提供了一个简单直观的框架,用于向音频和视频流添加效果。 该框架包含基本接口,你可以实现这些接口来创建自定义音频和视频效果,并将其插入媒体管道。 |
网络
功能 / 特点 | DESCRIPTION |
---|---|
插座 | 套接字更新包括: 套接字代理: 套接字代理可以代表应用生命周期的任何状态建立和关闭套接字连接。 这使得应用和服务更易于发现。 例如,通过套接字代理,Win32 服务仍可以接受传入套接字连接,即使它未运行。 吞吐量改进: 套接字吞吐量已针对使用 Windows.Networking.Sockets 命名空间的应用进行了优化。 |
后台传输的后续处理任务 | Windows.Networking.BackgroundTransfer 命名空间中的新 API 允许注册处理后任务组。 因此,你的应用可以立即处理后台传输的成功或失败,即使它不在前台,而不是在用户下次恢复应用时等待。 |
蓝牙对广告的支持 | 借助 Windows.Devices.Bluetooth.Advertisement 命名空间,应用可以发送、接收和筛选蓝牙 LE 广播。 |
Wi-Fi 直接 API 更新 | 更新后的设备代理可以直接在应用内与设备配对,无需离开应用程序。
Windows.Devices.WiFiDirect 命名空间的新增功能还允许设备使自己对其他设备可见,并允许它侦听传入连接的通知。 注意: 在此版本中,Wi-Fi 直接功能改进不内置于 UX 中,它们仅支持按钮配对。 此外,此版本仅支持一个活动连接。 |
对 JSON 支持的改进 | Windows.Data.Json 命名空间现在更好地支持在调试会话期间转换 JSON 对象时的现有标准定义和开发人员体验。 |
安全
功能 / 特点 | DESCRIPTION |
---|---|
ECC 加密 | Windows.Security.Cryptography 命名空间中的新 API 支持椭圆曲线加密(ECC),这是基于有限字段椭圆曲线的公钥加密实现。 ECC 在数学上比 RSA 复杂,提供较小的密钥大小、减少内存消耗并提高性能。 它为 Microsoft 服务和客户提供一个作为 RSA 密钥和 NIST 批准曲线参数的替代方案。 |
Microsoft Passport | Microsoft Passport 是一种替代身份验证方法,用于将密码替换为非对称加密和手势。 凭据命名空间中的类(如 KeyCredentialManger),使开发人员可以轻松地使用 Microsoft Passport 创建应用程序,而无需复杂的加密或生物识别。 |
Microsoft Passport for Work | Microsoft Passport for Work 是使用不使用密码、智能卡和虚拟智能卡的 Azure Active Directory 帐户登录 Windows 的替代方法。 可以选择是禁用还是启用此策略设置。 |
令牌代理 | 令牌代理是一个新的身份验证框架,使应用能够更轻松地连接到联机标识提供者(如 Facebook)。 帐户用户名和密码管理等功能以及简化的 UI 为用户提供了大大提高的身份验证体验。 |
系统服务
功能 / 特点 | DESCRIPTION |
---|---|
权力 | 你的 Windows 桌面应用程序现在可以在电池节能模式开启或关闭时收到通知。 通过响应不断变化的电源条件,应用程序有机会帮助延长电池使用时间。 GUID_POWER_SAVING_STATUS:将此新的 GUID 与 PowerSettingRegisterNotification 函数一起使用,以在电池节电功能启用或禁用时收到通知。 SYSTEM_POWER_STATUS:此结构已更新,以支持省电模式。 第四个成员 SystemStatusFlag(以前命名为 Reserved1)现在指示是否已启用节电模式。 使用 GetSystemPowerStatus 函数检索指向此结构的指针。 |
版本 | 可以使用 版本帮助程序函数 来确定操作系统的版本。 对于 Windows 10,这些辅助函数包括一个新函数,IsWindows10OrGreater。 在确定系统版本时,应使用帮助程序函数,而不是弃用的 GetVersionEx 和 GetVersion 函数。 有关如何获取系统版本的详细信息,请参阅 获取系统版本。 如果使用弃用的 GetVersionEx 或 GetVersion 函数获取 OSVERSIONINFOEX 或 OSVERSIONINFO 结构中的版本信息, 请注意,这些结构包含的版本号从 Windows 8.1 和 Windows Server 2012 R2 的 6.3 增加到 Windows 10.0。 有关操作系统版本号的详细信息,请参阅 操作系统版本。 还需要在应用程序中专门面向 Windows 8.1 或 Windows 10,才能使用 GetVersionEx 或 GetVersion 函数获取这些版本的正确版本信息。 有关如何将您的应用程序定位于这些 Windows 版本的信息,请参阅 将应用程序定位于 Windows 的指南。 |
用户信息 | Windows.System 命名空间中的新 API 可以轻松访问有关用户的信息,例如用户名和帐户图片。 它还提供响应用户事件(例如登录和注销)的功能。 |
内存管理和性能剖析 | Windows.System 中对内存分析 API 的支持已扩展到所有平台,并且其整体功能已通过新的类和函数进行了增强。 |
储存
功能 / 特点 | DESCRIPTION |
---|---|
适用于 Windows Phone 的文件搜索 API | 作为应用发布者,您可以通过在应用清单中添加扩展,注册您的应用,以便与您发布的其他应用共享存储文件夹。 然后调用 Windows.Storage.ApplicationData.GetPublisherCacheFolder 方法来获取共享存储位置。 Windows 运行时应用的强安全模型通常阻止应用在它们之间共享数据。 但是,来自同一发布者的应用来说,针对每个用户共享文件和设置可能是有用的。 |
工具
功能 / 特点 | DESCRIPTION |
---|---|
Visual Studio 中的实时可视化树 | Visual Studio 具有新的实时可视化树功能。 调试时可以使用它快速了解应用的可视化树的状态,并了解元素属性的设置方式。 它还允许你在应用运行时更改属性值,因此无需重新启动即可调整和试验。 |
跟踪日志 | TraceLogging 是用户模式应用和内核模式驱动程序的新事件跟踪 API。它构建在 Windows 事件跟踪 (ETW) 之上。 此 API 提供了一种简化的方法,用于检测代码,并将结构化数据包含在事件中,而无需单独的检测清单 XML 文件。 WinRT、.NET 和 C/C++ TraceLogging API 可用于为不同的开发人员受众提供服务。 |
用户体验
功能 / 特点 | DESCRIPTION |
---|---|
语音识别 | 通用 Windows 平台现在支持对长格式听写方案的连续语音识别。 了解如何在语音交互文档中启用连续听写功能。 |
不同应用程序平台之间的拖放功能 | 新的 Windows.ApplicationModel.DataTransfer.DragDrop 命名空间将拖放功能引入通用 Windows 应用。 以前,桌面程序的常见拖放方案(如将文档从文件夹拖动到 Outlook 电子邮件中以附加文档)在通用 Windows 应用中是不可能的。 使用这些新 API,你的应用可以让用户轻松地在不同的通用 Windows 应用和桌面之间移动数据。 为了支持应用之间的拖放操作,这些新的应用程序编程接口(API)已被添加到 XAML:ListViewBase.DragItemsCompleted; UIElement:CanDrag、DragStarting、StartDragAsync、DropCompleted; DragOperationDeferral,DragUI,DragUIOverride; DragEventArgs:AcceptedOperation、DataView、DragUIOverride、GetDeferral、修饰符; DragItemsCompletedEventArgs、DropCompletedEventArgs、DragStartingEventArgs |
自定义窗口标题栏 | 对于桌面设备系列的 UWP 应用,现在可以将 ApplicationViewTitleBar 类与 ApplicationView.TitleBar 属性一起使用,并使用 Window.SetTitleBar 方法将默认的 Windows 标题栏内容替换为自己的自定义 XAML 内容。 你的 XAML 被视为“system chrome”(系统界面框架),因此 Windows 会处理输入事件,而不是你的应用程序。 这意味着用户仍然可以拖动和调整窗口的大小,即使单击自定义标题栏内容也是如此。 |
网络
功能 / 特点 | DESCRIPTION |
---|---|
Microsoft Edge | Microsoft Edge 是为 Windows 10 构建的新默认浏览器。 有关 Microsoft Edge 中包含的开发人员功能和标准的概述(包括最新的 JavaScript 功能),请参阅 Microsoft Edge 开发人员指南。 |
WebView 浏览 | WebView 控件使用与新的 Microsoft Edge 浏览器相同的呈现引擎。 这提供了最准确的符合标准的 HTML 呈现模式。 |
线程外 WebView | 可以指定 WebView.ExecutionMode,以便在单独的后台线程上处理和显示 Web 内容。 这可以提高某些特定方案中的性能。 |
WebView.UnsupportedUriSchemeIdentified 事件 | 新的 WebView.UnsupportedUriSchemeIdentified 事件允许你决定应用应如何采用不受支持的 URI 方案。 您可以处理此事件,以便您的应用程序为不受支持的 URI 方案提供自定义处理。 有关 HTML WebView 控件,请参阅 MSWebViewUnsupportedUriSchemeIdentified 事件。 |
WebView.NewWindowRequested 事件 | 新的 WebView.NewWindowRequested 事件允许在 WebView 中的脚本请求新的浏览器窗口时做出响应。 有关 HTML WebView 控件,请参阅 MSWebViewNewWindowRequested 事件。 |
WebView.PermissionRequested 事件 | 新的 WebView.PermissionRequested 事件允许 WebView 内容利用丰富的新 HTML5 API,这些 API 需要用户的特殊权限,例如地理位置。 请参阅 HTML WebView 控件中的 MSWebViewPermissionRequested 事件。 |
WebView.UnviewableContentIdentified 事件 | 新的 WebView.UnviewableContentIdentified 事件允许在 WebView 导航到非 Web 内容(如 PDF 文件或 Office 文档)时做出响应。 有关 HTML WebView 控件,请参阅 MSWebViewUnviewableContentIdentified 事件。 |
WebView.AddWebAllowedObject 方法 | 可以调用新的 WebView.AddWebAllowedObject 方法将 WinRT 对象注入 XAML WebView,然后从该 WebView 中托管的受信任 JavaScript 调用其函数。 例如,Web 内容可以通过请求其父应用调用 ToastNotificationManager WinRT API 来显示系统通知。 有关 HTML WebView 控件,请参阅 addWebAllowedObject 方法。 |
WebView.ClearTemporaryWebDataAsync 方法 | 当用户与 XAML WebView 中的 Web 内容交互时,WebView 控件会基于该用户的会话缓存数据。 可以调用新的 ClearTemporaryWebDataAsync 方法来清除此缓存。 例如,当一个用户注销应用时,可以清除缓存,以便另一个用户无法访问上一个会话中的任何数据。 |