上一主题是 故障排除。
在以声明性 XAML 标记形式定义 UI 的做法在从通用 8.1 应用向通用 Windows 平台 (UWP) 应用转移时表现得非常顺利。 你会发现大部分标记是兼容的,尽管可能需要对所使用的系统资源键或自定义模板进行一些调整。 视图模型中的命令性代码几乎不需要更改。 即使在表示层中处理 UI 元素的很多或大部分代码也应容易移植。
命令性代码
如果只想进入项目生成阶段,可以注释或存根任何非必要代码。 然后逐一处理问题,并参考本部分中的以下主题(以及上一主题:故障排除),直到所有生成和运行时问题都已解决,并且移植已完成。
自适应/响应式 UI
由于你的应用可以在可能广泛的设备上运行(每个设备都有其自己的屏幕大小和分辨率),因此你需要超越移植应用的最小步骤,并且你需要定制 UI,使其在这些设备上看起来最佳。 您可以使用自适应视觉状态管理器功能动态检测窗口大小,并根据响应更改布局。在 Bookstore2 案例研究主题的 自适应 UI 部分中给出了一个示例,展示如何进行这项操作。
返回按钮处理
对于通用 8.1 应用,Windows 运行时 8.x 应用和 Windows Phone 商店应用在用户界面显示和后退按钮事件处理方面有不同的方法。 但是,对于 Windows 10 应用,可以在应用中使用单个方法。 在移动设备上,按钮可以是设备上的电容按钮,也可以是外壳中的按钮。 在桌面设备上,只要应用中可以进行返回导航,就会在应用的用户界面中添加一个按钮,这个按钮会显示在窗口化应用的标题栏中,或在 平板模式(仅适用于 Windows 10)的任务栏中显示。 后退按钮事件是所有设备系列的通用概念,在硬件或软件中实现的按钮会引发相同的 BackRequested 事件。
下面的示例适用于所有设备系列,并且适合处理所有页面的相同情况,以及无需确认导航的情况(例如,警告未保存的更改)。
// app.xaml.cs
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
[...]
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;
rootFrame.Navigated += RootFrame_Navigated;
}
private void RootFrame_Navigated(object sender, NavigationEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
// Note: On device families that have no title bar, setting AppViewBackButtonVisibility can safely execute
// but it will have no effect. Such device families provide back button UI for you.
if (rootFrame.CanGoBack)
{
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
Windows.UI.Core.AppViewBackButtonVisibility.Visible;
}
else
{
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
Windows.UI.Core.AppViewBackButtonVisibility.Collapsed;
}
}
private void App_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
rootFrame.GoBack();
}
}
还有一种针对所有设备系列的统一方法,可以以编程方式退出应用。
Windows.UI.Xaml.Application.Current.Exit();
魅力
无需更改任何与超级按钮集成的代码,但确实需要向应用添加一些 UI 来取代超级按钮栏,而超级按钮栏不是 Windows 10 shell 的一部分。 在 Windows 10 上运行的通用 8.1 应用在其标题栏中由系统渲染的边框提供一种替代的用户界面。
控件和控件样式和模板
在 Windows 10 上运行的通用 8.1 应用将保留与控件相关的 8.1 外观和行为。 但是,将该应用移植到 Windows 10 应用时,外观和行为存在一些差异。 Windows 10 应用的控件体系结构和设计基本保持不变,因此这些更改主要围绕设计语言、简化和可用性改进。
注意 PointerOver 视觉状态与 Windows 10 应用和 Windows 运行时 8.x 应用中的自定义样式/模板相关,但不适用于 Windows Phone 应用商店应用。 出于此原因(以及 Windows 10 应用支持的系统资源密钥),建议在将应用移植到 Windows 10 时,重新使用 Windows 运行时 8.x 应用中的自定义样式/模板。 如果你希望确定自定义样式/模板正在使用最新的视觉状态集,并且受益于对默认样式/模板所做的性能改进,请编辑新的 Windows 10 默认模板的副本,然后重新应用自定义。 性能改进的一个示例是,以前将 ContentPresenter 或面板括起来的任何 边框 都已删除,子元素现在呈现边框。
下面是控件更改的一些更具体的示例。
控件名称 | 改变 |
---|---|
AppBar | 如果使用 AppBar 控件(建议改为CommandBar),则默认情况下它不会隐藏在 Windows 10 应用中。 可以使用 AppBar.ClosedDisplayMode 属性来控制此功能。 |
AppBar、CommandBar | 在 Windows 10 应用中,AppBar 和 CommandBar 上有一个 查看更多 按钮(即省略号)。 |
CommandBar | 在 Windows 运行时 8.x 应用中,CommandBar 的辅助命令始终可见。 在 Windows Phone 应用商店应用中和 Windows 10 应用中,在命令栏打开之前不会显示。 |
CommandBar | 对于 Windows Phone 应用商店应用,CommandBar.IsSticky 的值不会影响该栏是否允许。 对于 Windows 10 应用程序,如果 IsSticky 设置为 true,则 CommandBar 将忽略轻触关闭手势。 |
CommandBar | 在 Windows 10 应用中,CommandBar 不会处理 EdgeGesture.Completed 事件,也不会处理 UIElement.RightTapped 事件。 它也不会响应点击或向上轻扫。 你仍可以选择处理这些事件并设置 IsOpen。 |
日期选择器,时间选择器 | 检查应用在视觉效果改动之后的外观,包括 DatePicker 和 TimePicker。 对于在移动设备上运行的 Windows 10 应用,这些控件不再导航到选择页面,而是使用可允许的弹出窗口。 |
日期选择器,时间选择器 | 在 Windows 10 应用中,无法将 DatePicker 或 TimePicker 置于浮出控件中。如果希望这些控件显示在弹出窗口类型控件中,则可以使用 DatePickerFlyout 和 TimePickerFlyout。 |
GridView、ListView | 有关 GridView/ListView,请参阅 GridView 和 ListView 更改。 |
中心 | 在 Windows Phone 应用商店的一个应用中,Hub 控件会从最后一个部分环绕回到第一个部分。 在 Windows 运行时 8.x 应用中,在 Windows 10 应用中,中心部分不会环绕。 |
中心 | 在 Windows Phone 应用商店应用中,中心 控件的背景图像相对于中心部分在视差中移动。 在 Windows 运行时 8.x 应用和 Windows 10 应用中,不使用视差。 |
中心 | 在通用 8.1 应用中,HubSection.IsHeaderInteractive 属性会导致节标头(旁边呈现的 V 形字形)变为交互式。 在 Windows 10 应用中,标头旁边有一个交互式的“查看更多”功能,但标头本身不是交互式的。 IsHeaderInteractive 仍然决定交互是否引发 Hub.SectionHeaderClick 事件。 |
MessageDialog | 如果使用 MessageDialog,请考虑改用更灵活的 ContentDialog。 另请参阅 XAML UI 基础知识 示例。 |
ListPickerFlyout,PickerFlyout | ListPickerFlyout 和 PickerFlyout 已在 Windows 10 应用中被弃用。 对于单个选择浮出控件,请使用 MenuFlyout;对于更复杂的体验,请使用 浮出控件。 |
密码框 | PasswordBox.IsPasswordRevealButtonEnabled 属性在 Windows 10 应用中已弃用,并且设置它不起作用。 请改用 PasswordBox.PasswordRevealMode,其默认模式为 Peek(在此模式中会显示一个眼睛符号,就像在 Windows Runtime 8.x 应用中那样)。 另请参阅密码框指南 。 |
轴心 | Pivot 控件现已通用,它不再局限于在移动设备上使用。 |
搜索框 | 尽管 SearchBox 在通用设备系列中实现,但它在移动设备上无法完全正常运行。 请参阅 SearchBox 已弃用,建议使用 AutoSuggestBox。 |
SemanticZoom | 有关 SemanticZoom,请参阅 SemanticZoom 更改。 |
ScrollViewer | ScrollViewer 的某些默认属性已更改。 HorizontalScrollMode自动,VerticalScrollMode自动,ZoomMode禁用。 如果新的默认值不适合你的应用,则可以在样式或控件本身上将其更改为本地值。 |
TextBox | 在 Windows Runtime 8.x 应用中,对于 TextBox,拼写检查默认是关闭的。 在 Windows Phone 应用商店应用中,在 Windows 10 应用中,它默认处于打开状态。 |
TextBox | TextBox 的默认字号已从 11 更改为 15。 |
TextBox | TextBox.TextReadingOrder 的默认值已从 默认 更改为 DetectFromContent。 如果这是不可取的,请使用 UseFlowDirection。 默认设置 已弃用。 |
各种 | 强调色适用于 Windows Phone 应用商店应用 和 Windows 10 应用,但不适用于 Windows 运行时 8.x 应用。 |
有关 UWP 应用控件的详细信息,请参阅按函数、
Windows 10 中的设计语言
通用 8.1 应用和 Windows 10 应用之间的设计语言存在一些小但重要的差异。 有关所有详细信息,请参阅 设计。 尽管设计语言发生了变化,但我们的设计原则仍然一致:注重细节,但始终通过专注于内容而不是界面装饰来实现简约,大幅减少视觉元素,并保持数字领域的真实性;利用视觉层次,尤其是在字体排版上;设计基于网格;并通过流畅的动画让你的体验栩栩如生。
有效像素、查看距离和比例因子
以往,视图像素是一种方法,可以将 UI 元素的大小和布局从设备的实际物理尺寸和分辨率中抽象出来。 视图像素现已演变为有效像素,下面是该术语的解释、含义以及它提供的额外值。
术语“分辨率”是指像素密度的度量值,而不是通常认为的像素计数。 “有效分辨率”是指在不同的观看距离和设备物理像素大小影响下,图像或字形的物理像素如何呈现给人眼(像素密度是物理像素大小的倒数)。 有效分辨率是构建体验的良好指标,因为它以用户为中心。 通过了解所有因素并控制 UI 元素的大小,可以使用户体验成为良好的体验。
不同设备的有效像素宽度各不相同,从最小设备的 320 像素,到中等尺寸监视器的 1024 像素,甚至更高。 你只需像往常一样继续使用自动调整大小的元素和动态布局面板。 在某些情况下,你将在 XAML 标记中将 UI 元素的属性设置为固定大小。 根据应用运行的设备和用户的显示设置,比例系数会自动应用到您的应用程序。 缩放因子用于保持任何固定大小的 UI 元素,使其在各种屏幕尺寸下为用户提供一个大小相对恒定的触控(和阅读)目标。 与动态布局配合使用,您的UI不仅仅会在不同设备上进行光学缩放。 相反,它将执行必要的操作,以将适当的内容量放入可用空间中。
因此,为了让你的应用在所有显示器上有最佳的体验,我们建议你为每种位图资产创建一系列不同大小的版本,每个版本都适合特定的缩放系数。 提供按 100%倍数、200%倍数和 400%倍数的资产(按照这一优先顺序),在大多数情况下,所有中间缩放系数都会带来出色的结果。
注意 如果出于任何原因,您无法创建多个尺寸的资产,那么请创建 100 个按%比例缩放的资产。 在 Microsoft Visual Studio 中,UWP 应用的默认项目模板仅提供一个大小的品牌资产(磁贴图像和徽标),但它们不是 100%缩放。 在为自己的应用创作资产时,请遵循本节中的指南,提供 100%、200%和 400% 尺寸,并使用资产包。
如果你有复杂的艺术作品,那么你可能想要以更多的尺寸提供这些资源。 如果你从矢量艺术开始,那么在任何规模因子上生成高质量的资产相对容易。
不建议你尝试支持所有缩放因子,但 Windows 10 应用的规模因子的完整列表为 100%、125%、150%、200%、250%、300%和 400%。 如果你提供这些资源,应用商店将为每个设备选择合适大小的资源,并且只会下载这些资源。 应用商店根据设备的 DPI 选择要下载的资产。 你可以以缩放因子(例如 140% 和 220%)重新使用 Windows 运行时 8.x 应用中的资产,但你的应用将以新的缩放因子之一运行,因此某些位图缩放将不可避免。 在一系列设备上测试你的应用,以查看你是否对案例中的结果感到满意。
你可能在 Windows 运行时 8.x 应用中重新使用 XAML 标记,其中实际的维度值用于标记(可能用于调整形状或其他元素的大小,或用于版式)。 但是,在某些情况下,Windows 10 应用在设备上使用的缩放因子比通用 8.1 应用更大(例如,使用 150% 替代之前的 140%,使用 200% 替代之前的 180%)。 因此,如果你发现这些文本值现在在 Windows 10 上太大,请尝试将它们乘以 0.8。 有关详细信息,请参阅 UWP 应用的响应式设计 101。
GridView 和 ListView 更改
已对 GridView 的默认样式设置器进行了多项更改, 使控件垂直滚动(而不是水平滚动,就像之前默认所做的那样)。 如果编辑了项目中默认样式的副本,则副本不会进行这些更改,因此需要手动进行这些更改。 下面是更改的列表。
- ScrollViewer.HorizontalScrollBarVisibility 的 setter 已从 自动 更改为 禁用。
- ScrollViewer.VerticalScrollBarVisibility 的设置器已从 禁用 更改为 自动。
的 setter 已从ScrollViewer.HorizontalScrollMode “启用” 更改为“禁用” 。- ScrollViewer.VerticalScrollMode 的 setter 已从“已禁用 ” 更改为“已启用”。
- 在
的 setter 中,ItemsWrapGrid.OrientationItemsPanel 的值已从 垂直 更改为水平 。
如果最后一次更改(方向的更改)似乎相矛盾,请记住,我们正在谈论一个环绕网格。 水平排列的换行网格(新值)类似于一种文字系统,其中文本水平排列,并在页面末端换行到下一行。 这样的文本页面垂直滚动。 相反,垂直排列的换行网格(上一个值)类似于一种文本垂直排列并因此水平滚动的书写系统。
下面是 GridView 和 ListView 在 Windows 10 中更改或不受支持的各个方面。
- Windows 10 应用不支持 IsSwipeEnabled 属性(仅限 Windows Runtime 8.x 应用)。 API 仍然存在,但设置它不起作用。 除了向下轻扫(由于数据显示它不易发现)和右键单击(保留用于显示上下文菜单)之外,所有以前的选择手势均受支持。
- Windows 10 应用不支持 ReorderMode 属性(仅限 Windows Phone 应用商店应用)。 API 仍然存在,但设置它不起作用。 相反,在 GridView 或 ListView 上,将 AllowDrop 和 CanReorderItems 设置为 true,然后用户将能够使用按住(或点击并拖动)手势来重新排序。
- 针对 Windows 10 进行开发时,请在项容器样式中使用 ListViewItemPresenter,而不是 GridViewItemPresenter,无论是用于 ListView 还是 GridView。 如果编辑默认项容器样式的副本,则会收到正确的类型。
- Windows 10 应用的选择视觉效果已更改。 如果将 SelectionMode 设置为 多选,则默认情况下,将为每个项呈现一个复选框。 ListView 项的默认设置意味着复选框将排在项目旁边,因此,其余项占用的空间将略有减少和移动。 对于 GridView 项,复选框默认覆盖在项目顶部。 但是,无论哪种情况,您都可以控制复选框的布局(内联或覆盖)(通过 CheckMode 属性),以及是否在 ListViewItemPresenter 元素中根据您的项目容器样式中,利用 SelectionCheckMarkVisualEnabled 属性将其显示出来,如下示例所示。
- 在 Windows 10 中,在 UI 虚拟化期间,ContainerContentChanging 事件每个项目会引发两次:一次用于回收再利用,一次用于重复使用。 如果 InRecycleQueue 的值是 true,并且你没有需要做的特殊回收工作,那么你可以立即退出事件处理程序,并可以确信,当同一项再次被使用时,该事件处理程序会被重新进入(在那时 InRecycleQueue 将是 false)。
<Style x:Key="CustomItemContainerStyle" TargetType="ListViewItem|GridViewItem">
...
<Setter.Value>
<ControlTemplate TargetType="ListViewItem|GridViewItem">
<ListViewItemPresenter CheckMode="Inline|Overlay" ... />
</ControlTemplate>
</Setter.Value>
...
</Style>
使用内联复选框的
带有内嵌复选框的 ListViewItemPresenter
带有叠加复选框的 ListViewItemPresenter
- 由于删除了选择的向下轻扫和右键单击手势(出于上述原因),交互模型发生了更改,其一个后果是,ItemClick 和 SelectionChanged 事件不再相互排斥。 对于 Windows 10 应用,请查看你的方案,并确定是采用“选择”还是“调用”交互模型。 有关详细信息,请参阅 如何更改交互模式。
- 对用于设置 ListViewItemPresenter 样式的属性有一些更改。 新的属性为 CheckBoxBrush、PressedBackground、SelectedPressedBackground和 FocusSecondaryBorderBrush。 Windows 10 应用忽略的属性 Padding(改用 ContentMargin),CheckHintBrush,CheckSelectingBrush,PointerOverBackgroundMargin、ReorderHintOffset、SelectedBorderThickness和 SelectedPointerOverBorderBrush。
下表描述了在 ListViewItem 和 GridViewItem 控件模板中,对视觉状态和视觉状态组的更改。
8.1 | 功能状态 | Windows 10/11 | 功能状态 |
---|---|---|---|
CommonStates | CommonStates | ||
正常 | 正常 | ||
PointerOver | PointerOver | ||
已按下 | 已按下 | ||
指针悬停并按下 | [不可用] | ||
禁用 | [不可用] | ||
[不可用] | 指针悬停于选定项 | ||
[不可用] | 已选定 | ||
[不可用] | 按下已选 | ||
[不可用] | 禁用状态 | ||
[不可用] | 禁用 | ||
[不可用] | 已启用 | ||
选择提示状态 | [不可用] | ||
VerticalSelectionHint | [不可用] | ||
水平选择提示 | [不可用] | ||
无选择提示 | [不可用] | ||
[不可用] | MultiSelectStates | ||
[不可用] | 多项选择已禁用 | ||
[不可用] | 启用多选 | ||
选择状态 | [不可用] | ||
取消选择 | [不可用] | ||
未选定 | [不可用] | ||
未选择指针悬停 | [不可用] | ||
未选择滑动 | [不可用] | ||
选择 | [不可用] | ||
已选定 | [不可用] | ||
选择刷卡 | [不可用] | ||
已选未聚焦 | [不可用] |
如果你有自定义 ListViewItem 或 GridViewItem 控件模板,则根据上述更改对其进行查看。 建议先编辑新默认模板的副本,然后重新应用自定义。 如果出于任何原因,你无法执行此操作,并且需要编辑现有模板,下面是有关如何执行此操作的一些常规指南。
- 添加新的 MultiSelectStates 视觉状态组。
- 添加新的 MultiSelectDisabled 视觉状态。
- 添加新的 MultiSelectEnabled 视觉状态。
- 添加新的 DisabledStates 视觉状态组。
- 添加新的“已启用”视觉状态。
- 在 CommonStates 视觉状态组中,删除 PointerOverPressed 视觉状态。
- 将“禁用”视觉状态移动到 DisabledStates 视觉状态组。
- 添加新的 PointerOverSelected 视觉状态。
- 添加新的 PressedSelected 视觉状态。
- 删除 SelectedHintStates 视觉状态组。
- 在 SelectionStates 视觉状态组中,将所选视觉状态移动到 CommonStates 视觉状态组。
- 删除整个 SelectionStates 视觉状态组。
本地化和全球化
可以在 UWP 应用项目中重新使用 Universal 8.1 项目中的 Resources.resw 文件。 复制文件后,将其添加到项目,并将 生成操作 设置为 PRIResource,并将 复制到输出目录请勿复制。 ResourceContext.QualifierValues 主题介绍了如何基于设备系列资源选择因子加载特定于设备系列的资源。
播放到
Windows.Media.PlayTo 命名空间中的 API 已被弃用,在 Windows 10 应用中建议使用 Windows.Media.Casting API。
资源键和 TextBlock 样式的尺寸
Windows 10 的设计语言已演变,因此某些系统样式发生了变化。 在某些情况下,您需要重新审视视图的视觉设计,使其与更改后的样式属性相协调。
在其他情况下,不再支持资源密钥。 Visual Studio 中的 XAML 标记编辑器突出显示了对无法解析的资源键的引用。 例如,XAML 标记编辑器会用红色波浪线为样式键 ListViewItemTextBlockStyle
的引用加下划线。 如果未更正,则在尝试将其部署到模拟器或设备时,应用将立即终止。 因此,请务必注意 XAML 标记正确性。 你会发现 Visual Studio 是一个很好的工具,用于捕获此类问题。
对于仍受支持的键,设计语言的更改意味着一些样式所设置的属性发生了变化。 例如,TitleTextBlockStyle
在 Windows Runtime 8.x 应用中将 FontSize 设置为 14.667px,在 Windows Phone 应用商店应用中设置为 18.14px。 但是,相同的样式将在 Windows 10 应用中将 FontSize 设置为更大的 24px。 查看设计和布局,并在正确的位置使用适当的样式。 详细信息,请参阅 字体指南 和 UWP 应用设计指南。
这是不再支持的密钥的完整列表。
- 复选框和单选按钮最小宽度设置
- 复选框和单选按钮文本填充厚度
- ComboBox弹出列表占位符文字不透明度
- ComboBoxFlyoutList占位符文本主题边距
- 组合框高亮背景主题画笔
- ComboBoxHighlightedBorderThemeBrush
- 组合框高亮前景主题画笔
- ComboBox内嵌占位文本前景主题画笔
- 组合框内占位符文字主题字体粗细(ComboBoxInlinePlaceholderTextThemeFontWeight)
- 组合框项禁用主题不透明度
- 组合框项高对比度背景主题边距
- 组合框项最小高度主题大小
- ComboBox占位符文本块样式
- 组合框占位符文本主题边距
- 命令栏背景主题画刷
- CommandBarForegroundThemeBrush
- 内容对话框按钮1主机填充 (ContentDialogButton1HostPadding)
- 内容对话框按钮2主体填充
- 内容对话框按钮最小高度
- 内容对话内容横向宽度
- 内容对话框内容最小高度
- 内容对话框调暗颜色
- 内容对话框标题最小高度
- 控制上下文信息文本块样式
- ControlHeaderContentPresenterStyle
- 控制头文本块样式
- FlyoutContentPanelLandscape主题边距
- FlyoutContentPanelPortraitThemeMargin
- GrabberMargin
- 网格视图项边距 (GridViewItemMargin)
- 网格视图项占位符背景主题画笔
- 组标题文本样式
- HeaderContentPresenterStyle
- HighContrastBlack
- HighContrastWhite
- HubHeader字符间距
- HubHeaderFontSize
- 中心标题边距厚度
- 集线器节标题字符间距
- 中心节头字体大小
- 集线器区域标题边距厚度
- 集线器部分边距厚度
- InlineWindowPlayPauseMargin
- 项目模板
- 左边全屏窗口边距
- 左边距
- 列表视图空静态文本块样式
- 列表视图项内容文本块样式
- ListViewItemContentTranslateX
- 列表视图项边距
- ListViewItem多选复选框边距
- 列表视图项副标题文本块样式
- 列表视图项文本块样式
- 媒体控制面板音频主题笔刷
- 媒体控制面板手机视频主题画笔
- 媒体控制面板视频主题画笔
- 媒体控制面板视频主题颜色
- MediaControlPlayPauseThemeBrush
- MediaControlTimeRowThemeBrush
- MediaControlTimeRowThemeColor
- 媒体下载进度指示器主题画笔
- 媒体错误背景主题画刷
- MediaTextThemeBrush
- 菜单弹出背景主题画笔
- 菜单弹出边框主题画笔
- 如果没有必要得出的背景来决定需要翻译,这保持原样就是合适的。如果在某些软件文档或设置中有确切的翻译,"菜单弹出横向主题填充" 可作为设想的翻译选项。
- 菜单飞出左侧横向边框主题厚度
- 菜单弹出纵向边框主题厚度
- 菜单弹出布局竖屏主题内边距
- 菜单弹出窗口右侧横向边框主题厚度
- 消息对话框内容样式
- 消息对话框标题样式
- 最小窗口边距
- 密码框复选框主题边距
- PhoneAccentBrush
- 手机背景画笔
- 手机背景颜色
- PhoneBaseBlackColor
- PhoneBaseHighColor
- PhoneBaseLowColor
- 手机低层纯色
- 手机基础中高色彩
- PhoneBaseMediumMidColor
- PhoneBaseMediumMidSolidColor
- PhoneBaseMidColor
- 电话底座白色
- 手机边框厚度 (PhoneBorderThickness)
- 按钮基础按下前景色画笔
- 手机按钮内容填充
- 手机按钮字体粗细
- 电话按钮最小高度
- 手机按钮最小宽度
- PhoneChromeBrush
- PhoneChromeColor
- PhoneControl背景颜色
- 电话控件禁用颜色
- PhoneControlForegroundColor
- 电话禁用画笔
- 电话禁用颜色
- PhoneFontFamilyLight
- PhoneFontFamilySemiBold
- PhoneForegroundBrush
- PhoneForegroundColor
- 电话高对比度选定背景主题画笔
- Phone高对比度选定前景主题画笔
- 手机图像占位符颜色
- PhoneLowBrush
- PhoneMidBrush
- 手机页面背景颜色
- PhonePivotLockedTranslation
- 电话Pivot未选择项目不透明度
- 电话单选框边框画笔
- 电话单选按钮组合框画刷
- 手机单选框复选框画笔
- 电话单选按钮按下笔刷
- 手机线条粗细
- PhoneTextHighColor
- 手机文本低颜色
- 电话文本中间颜色
- 手机文本在强调颜色上 (PhoneTextOverAccentColor)
- 手机触控目标大悬垂
- 手机触控目标超出范围
- 旋转头项目内边距
- 占位符内容显示器样式
- 进度条高对比度强调栏主题画笔 (ProgressBarHighContrastAccentBarThemeBrush)
- 进度条不确定矩形主题大小
- 进度条矩形样式
- 进度环活动背景不透明度
- ProgressRingElipseThemeMargin
- ProgressRingElipseThemeSize
- 进度环文本前景主题画笔
- 进度环文本主题边距
- 进度环主题大小
- RichEditBoxTextThemeMargin (富文本编辑框文本主题边距)
- 右侧全窗边距
- RightMargin
- ScrollBarMinThemeHeight (滚动条最小主题高度)
- 滚动条最小主题宽度
- 滚动条滑动拇指主题高度
- 滚动条平移滑块主题宽度
- 滑块拇指禁用边框主题画笔
- 滑块轨道边框主题画笔
- 滑块轨道禁用边框主题笔刷
- 文本框背景颜色
- 文本框边框颜色
- 文本框禁用标题前景主题画笔
- 文本框聚焦背景主题画笔
- TextBoxForegroundColor
- 文本框占位符颜色
- 文本控件标题边距主题厚度
- 文本控件标题最小高度尺寸
- 字体样式超超大字号
- 文本样式特大号加字体大小
- 文本样式中号字体大小
- 文本样式小字体尺寸
- 剩余时间元素边距
SearchBox 已弃用,建议使用 AutoSuggestBox 代替
尽管 SearchBox 在通用设备系列中实现,但它在移动设备上无法完全正常运行。 使用 AutoSuggestBox 来提升你的通用搜索体验。 下面介绍了如何使用 AutoSuggestBox实现搜索体验。
用户开始键入后,将引发 TextChanged 事件,其原因是 UserInput。 然后,您填充建议列表,并为 AutoSuggestBox设置 ItemsSource。 当用户导航列表时,将引发 SuggestionChosen 事件(如果已设置 TextMemberDisplayPath,则文本框会自动填充指定的属性)。 当用户使用 Enter 键提交选项时,将引发 QuerySubmitted 事件,此时您可以针对该建议采取措施(在这种情况下,最有可能导航到另一个页面,其中包含指定内容的详细信息)。 请注意,LinguisticDetails 和 Language 属性在 SearchBoxQuerySubmittedEventArgs 中不再受支持(有等效的 API 支持该功能)。 不再支持 KeyModifiers。
AutoSuggestBox 还支持输入法编辑器(IME)。 如果想要显示“查找”图标,也可以执行此操作(与图标交互将导致引发 QuerySubmitted 事件)。
<AutoSuggestBox ... >
<AutoSuggestBox.QueryIcon>
<SymbolIcon Symbol="Find"/>
</AutoSuggestBox.QueryIcon>
</AutoSuggestBox>
另请参阅 AutoSuggestBox 移植示例。
SemanticZoom 更改
SemanticZoom 的缩小手势已聚合在 Windows Phone 模型中,即点击或单击组标题(因此,在台式计算机上,不再显示缩小的减号按钮功能)。 现在,我们在所有设备上都能免费获得一致的性能表现。 与 Windows Phone 模型相比,外观上的一个区别是,缩小视图(跳转列表)取代了放大视图,而不是覆盖它。 因此,可以从缩小视图中删除任何半不透明背景。
在 Windows Phone 应用商店应用中,缩小的视图将扩展到屏幕的大小。 在 Windows 运行时 8.x 应用中和 Windows 10 应用中,缩小视图的大小限制为 SemanticZoom 控件的边界。
在 Windows Phone 应用商店的应用中,当缩略视图(在 z 轴顺序中)背景具有任何透明度时,会透显出其后方的内容。 在 Windows 运行时 8.x 应用中,在 Windows 10 应用中,缩小视图后看不到任何内容。
在 Windows 运行时 8.x 应用中,当应用被停用并重新激活时,将消除缩小视图(如果显示),并改为显示放大视图。 在 Windows Phone 商店应用和 Windows 10 应用中,如果缩小视图正在显示,则该缩小视图将继续保持显示状态。
在 Windows Phone 应用商店的应用中和 Windows 10 应用中,当按下后退按钮时,缩放视图会被关闭。 对于 Windows 运行时 8.x 应用,没有内置的后退按钮处理,因此问题不适用。
设置
Windows 运行时 8.x SettingsPane 类不适用于 Windows 10。 相反,除了生成“设置”页面外,还应为用户提供从应用中访问它的方法。 建议您在顶层显示此应用的设置页面,作为导航窗格中的最后一个固定的项目,以下是您所有的可选项。
- 导航窗格。 设置应该是导航列表中的最后一项,并保持固定在底部。
- 应用栏/工具栏(在选项卡视图或枢轴布局内)。 设置应该是应用栏或工具栏菜单浮出控件中的最后一项。 不建议将“设置”用作导航中的顶级项之一。
- 枢纽。 设置应位于菜单弹出窗口内部(可能来自应用栏菜单或中心布局中的工具栏菜单)。
也不建议将设置埋在大纲详细信息窗格中。
“设置”页应填充整个应用窗口,“设置”页也是“关于”和“反馈”的位置。 有关“设置”页面设计的指导,请参阅 应用设置指南。
文本
文本(或版式)是 UWP 应用的重要方面,在移植时,你可能希望重新访问视图的视觉设计,以便它们与新的设计语言协调。 使用这些插图查找可用的通用 Windows 平台(UWP)TextBlock 系统样式。 查找与所使用的 Windows Phone Silverlight 样式对应的样式。 或者,你可以创建自己的通用样式,并将 Windows Phone Silverlight 系统样式中的属性复制到这些样式中。
适用于 Windows 10 应用的系统 TextBlock 样式
在 Windows 运行时 8.x 应用和 Windows Phone 应用商店应用中,默认字体系列是全局用户界面。 在 Windows 10 应用中,默认字体系列为 Segoe UI。 因此,应用中的字体指标可能有所不同。 如果要重现 8.1 文本的外观,可以使用 LineHeight 和 LineStackingStrategy等属性设置自己的指标。
在 Windows 运行时 8.x 的应用和 Windows Phone 商店应用中,文本的默认语言设置为生成时的语言或设置为 en-us。 在 Windows 10 应用中,默认语言设置为顶部应用语言(字体回退)。 可以显式设置 FrameworkElement.Language,但如果不为该属性设置值,则可以享受更好的字体回退行为。
详细信息,请参阅 字体指南 和 UWP 应用设计指南。 另请参阅上面的 控件 部分,了解文本控件的更改。
主题更改
对于通用 8.1 应用,默认主题默认为深色。 对于 Windows 10 设备,默认主题已更改,但可以通过在 App.xaml 中声明请求的主题来控制使用的主题。 例如,若要在所有设备上使用深色主题,请将 RequestedTheme="Dark"
添加到根 Application 元素。
磁贴和弹出通知
对于 tiles 和 toasts,您当前使用的模板将继续在 Windows 10 应用中工作。 但是,现有可以使用的新自适应模板,这些模板在 通知、磁贴、通知弹窗和徽章中有详细描述。
以前,在台式计算机上,Toast 通知是暂时性消息。 一旦被错过或忽略,它会消失,并且不再可检索。 在 Windows Phone 上,如果 Toast 通知被忽略或暂时消除,它将进入操作中心。 现在,操作中心不再局限于移动设备系列。
若要发送 Toast 通知,不再需要声明功能。
窗口大小
对于通用 8.1 应用,ApplicationView 应用清单元素用于声明最小窗口宽度。 在 UWP 应用中,可以使用命令性代码指定最小大小(宽度和高度)。 默认最小大小为 500x320epx,这也是接受的最小大小。 接受的最大最小大小为 500x500epx。
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().SetPreferredMinSize
(new Size { Width = 500, Height = 500 });
下一主题是 移植用于 I/O、设备和应用模型。