QCon全球软件开发大会8折优惠倒计时,购票立减¥1760!了解详情 >>> 了解详情
写点什么

Windows 8 中的标准打印界面

2011 年 10 月 14 日

Windows 8 Metro 即将带来诸多改变,其中就包含了打印特性。据传,微软将会为打印推出一套新 API 以及一个可扩展的用户界面。该 API 既可以被 XAML 型应用所调用,同样也适用于 JavaScript 型的应用。

对打印机的支持一直是 Windows 的一个重要卖点。Windows 长期优于 IBM OS/2 并最终获得成功,其中关键因素就是提供了对打印机驱动程序的完美支持。然而,用户界面的设计一直被微软所忽视,同时应用程序也无心去创建自己的用户界面。

首先要面临的问题是.NET 提供的标准打印对话框。当在 Basic 程序中使用打印对话框时,可扩展性很有限。开发者除了通过拖拽控件来构建打印对话框以外,想要构建非标准的对话框几乎是很难的。在 Metro 中,PrintTaskAdvancedOptions 类为应用提供了自定义的打印机选项。这为文本框和选项列表控件提供了很好的扩展性,除此之外,在 XAML 和基于 JavaScript 的应用中的展现方式也是一致的。

另外一个问题是打印预览窗口,每个程序都需要独自提供对打印预览的支持。Windows 8 Metro 中的解决办法是,将打印预览窗口和打印对话框绑定。如果应用只提供对打印的支持不支持打印预览,用户的打印操作就会被中断。

打印的核心功能都是由 Windows.Graphics.Printing 命名空间提供。该 API 可同时被 XAML 和 JavaScript 应用所调用,而且理论上两种调用方式有着相同的用户体验。对于基于 JavaScript 的应用来说,开发者只需在应用中注册打印机,然后通过媒体库中提供的 CSS 来控制显示效果即可。

对于基于 XAML 应用的开发者来说,需要使用 XAML 来为打印和预览页面设定布局。这点与 WPF 和 Silverlight 中的打印功能很相似,需要配置一个 PrintDocument 类实例的事件监听器。(该版本的类可以在 Windows.UI.Xaml.Printing 命名空间下找到)

  • AddPage:声明一个打印页面的实例
  • Paginate:当用户改变某项设置,可能导致重排文档页码时被触发
  • GetPreviewPage:声明一个预览页面的实例

由于基于 Windows.UI.Xaml 命名空间,所以打印设置无法在 Metro 和桌面应用间共享。

查看英文原文: A Standardized Printing UI for Windows 8

2011 年 10 月 14 日 10:261837
用户头像

发布了 156 篇内容, 共 43.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Week 04 学习总结

Jeremy

第四周学习总结

iHai

极客大学架构师训练营

<<架构师训练营>>第四周作业

R20114

作业04-互联网架构演化

梦子说

课程作业

架构师训练营第四周课后作业

Cloud.

第四周总结

AIK

系统架构

eazonshaw

极客大学架构师训练营

Week 04- 作业二:学习总结

dean

极客大学架构师训练营

第04周 设计系统架构 命题作业

Jaye

架构师训练营第四周 - 作业

人世间

极客大学架构师训练营

「架构师训练营」第 4 周作业 - 互联网技术

森林

<<架构师训练营>>第四周总结

R20114

架构师0期第四周命题作业

何伟敏

第四周学习总结

麻辣

架构师训练营 W4 作业

telliex

架构学习第四周总结

云峰

第四周总结

changtai

极客大学架构师训练营

课堂作业 week4

Dennis

架构师训练营 第四周【学习总结】

小K

基于维基百科的网站架构分析

莫莫大人

极客大学架构师训练营

架构师训练营第四周作业

极客大学架构师训练营

架构师训练营 W4 心得

telliex

【架构师训练营】第 4周总结

花生无翼

大型互联网应用架构中的主要技术,与其对应的业务问题

Ph0rse

架构师训练营第四周心得

努力努力再努力m

极客大学架构师训练营

第 04 周作业

Jeremy

互联网技术方案

allen

系统架构知识-常识YES,能力NO

飞雪

系统架构演化

L001

架构师0期第四周总结

何伟敏

「架构师训练营」第 4 周作业 - 总结

森林

移动应用开发的下一站

移动应用开发的下一站

Windows 8中的标准打印界面-InfoQ