首先我们来看看现有控件中新增的功能:

FlipView编程方式切换时支持平滑滚动:

在Windows8中,FlipView在用手触控翻页的时候是有动画效果的,但当我们使用键盘或代码编程翻页时,却没有这个待遇,只能看到硬切换,没有动画效果。

在Windows 8.1中,对这项有了改进,增加你一个 UseTouchAnimationsForAllNavigation 属性,这样当我们使用编程方式切换时,也能看到动画效果。

不过,这个功能做得仍然不够彻底,即使打开UseTouchAnimationsForAllNavigation 属性,当我们在连续页面间切换时,能看到动画效果。但如果在不连续的页面间切换时:如第一页切换到第三页,依然是没有动画效果的。

ComboBox、DatePicker、TimePicker、Slider 和 Edit 支持标签

ComboBox、DatePicker、TimePicker、Slider 和 Edit控件多了一个Header属性,可以实现标签效果,要方便许多了。

另外,也可以通过HeaderTemplate设置为比较复杂的模板。

输入框支持水印

ComboBox、PasswordBox、RichEditBox、SearchBox、TextBox等几种输入框都支持水印了(效果见上图)。这倒是一个比较实用的更新。

文本显示的改进

  • MaxLines 属性:文本控件将调整其高度,确保无论字体大小、字体样式或文本长度如何,显示的行数都不会超过指定的行数。
  • SelectionHighlightColor 属性:可以自定义高亮文字的颜色。
  • TextWrapping.WrapWithOverflow:文本溢出时会继续往后写,类似Excel的 效果。
  • TextTrimming.Clip:文本溢出后后使用像素级裁剪,呈现半个字。
  • TextTrimming.CharacterEllipsis:文本溢出后显示省略号

ScrollViewer 支持冻结表头式滚动

ScrollViewer中增加了表头模板(TopHeaderLeftHeader 和 TopLeftHeader),可以很方便的实现类似Excel中的冻结效果,这个非常给力。

然后我们再来看看API中的改进:

数据绑定改进:

FrameworkElement.DataContextChanged 事件允许你响应 DataContext 属性值中的变化。你可以使用此事件而不是通过数据绑定来手动更新控件属性。这对于解决数据绑定性能问题十分有效。

Binding.FallbackValue 和 Binding.TargetNullValue 属性可让你设置当绑定无法解析某个值或解析为 null值时将会显示的默认值。

Binding.UpdateSourceTrigger 属性、FrameworkElement.GetBindingExpression 方法和BindingExpression 类可让你将双向绑定的默认行为更改为 TextBox.Text 属性。默认情况下,TextBox.Text绑定只有在控件失去焦点时才会更新其绑定源。将 UpdateSourceTrigger 设置为 PropertyChanged,以便在TextBox.Text 属性更改值时更新源。将 UpdateSourceTrigger 设置为 Explicit,以便使用BindingExpression.UpdateSource 方法通过编程方式更新源。

导航的改进:

新的 Frame 属性 BackStackForwardStackBackStackProperty 和 ForwardStackProperty。使用这些属性通过添加或删除 PageStackEntry 对象,以编程方式更改前后导航堆栈。这在很多情景下都十分有效,例如在用户登录后从导航历史记录中删除登录页,或者在使用不同的激活合约重新启动该应用时清除导航堆栈。

使用 NavigationTransitionInfo 参数值的 Frame.Navigate 重载。通过使用此重载通过特定的动画过渡(而非该页面的 XAML 中定义的任何过渡方式)导航到某个页面。你还可以通过 NavigationEventArgs 和NavigatingCancelEventArgs 类访问导航事件处理程序中的参数值。

NavigatingCancelEventArgs.Parameter 属性。当你需要根据导航参数值取消导航时,请使用此属性。

文件相关API:

StorageLibrary 类:在Windows 8中,如果用户需要打开库之外的文件,每次都要调用都浏览文件对话框,十分繁琐。现在可以通过StorageLibrary 类将一个文件夹添加到库中,这样程序就可以直接访问该文件夹了。

GetParentAsync 方法:这个方法可以方便我们访问父文件夹,当然,前提是你得有访问权限。

IsEqual 方法:可以实现两个文件对象的比较,可以解决那些没有路径的文件对象的比较问题。

TryGetItemAsync 方法:当获取文件失败时,可以返回NULL,终于可以抛弃那种每次获取文件都要try-catch的蛋疼写法了。

NeighboringFilesQuery 属性:可以打开文件时实现打开相关文件的功能。例如,打开视频文件时,同时打开字幕。

多媒体:

新增了一个貌似很强大的 SystemMediaTransportControls,现在没有空去体验它。

网络:

在新增的名字控件Windows.Web.Http下也有了一个HttpClient,用于代替之前的HttpClient,不过貌似没有看到太大的差别。

另外,新增的新的 BackgroundTransferGroup 类貌似比较强大,有空的时候试用一下。

其它:

VisualStudio的XAML设计器健壮和智能了不少,这点非常值得赞扬。XAML设计器中也支持使用Json作为SampleData了,本身这是个非常好的功能,不过蛋疼的是这么好的功能竟然不支持更加强大的WPF。

打包格式支持捆绑包,对于那些不能编成AnyCpu的程序,可以把不同平台下的程序捆绑后一起发布发布。不过感觉意义不大。

Windows 8.1中WinRT的变化(二)——新增功能的更多相关文章

  1. Windows 8.1中WinRT的变化(一)——新增控件

    这次WinRT的变化还是不小的,就拿新增控件来说,就有如下几种: AppBar 控件 我以前写过一篇文章接受过如何在WinRT程序中快速创建Metro风格图标,现在MS已经把他们标准化了,就不用我们自 ...

  2. 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能

    编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...

  3. Windows系统Unity3D中的快捷键

    Windows系统Unity3D中的快捷键 组合键 键 功能 File 文件 Ctrl   N New Scene 新建场景 Ctrl   O Open Scene 打开场景 Ctrl   S Sav ...

  4. Windows Server 2016-Win Ser 2016新增功能

    本来想着整个系列都是与Active Directory相关的内容,上一章节我们应读者要求补充了Window Server 2016标准版与数据中心版的区别,鉴于读者的疑惑,从本章节开始补充三到五章与W ...

  5. 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标

    我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化.因此传统的计算机 ...

  6. Windows 10 开发人员预览版中的新增功能(转自 IT之家)

    Windows 10 开发人员预览版中的新增功能 在Win10预览版中安装工具与SDK后,即可着手创建Windows通用应用或先浏览目前的环境与此前相比都发生了什么变化. 应用建模 文件资源管理器: ...

  7. C#中的线程(二)线程同步

    C#中的线程(二)线程同步   Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslato ...

  8. Windows Store 应用中获取程序集版本号的方法

    本文为个人博客备份文章,原文地址: http://validvoid.net/windows-store-app-get-assembly-version/ WinRT 中对反射做了很多限制,假设 W ...

  9. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

随机推荐

  1. ssl证书原理

    SSL证书(HTTPS)背后的加密算法 SSL证书(HTTPS)背后的加密算法 之前我们介绍SSL工作原理了解到当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒 ...

  2. PHP遍历数组的几种方法

      这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用.先分别介绍这几种方法     PHP中遍历数组 ...

  3. ZOJ 3606 Lazy Salesgirl ( 线段树 + 思路 )

    卖切糕的小女孩 http://www.cnblogs.com/wuyiqi/archive/2012/04/28/2474672.html #include <cstdio> #inclu ...

  4. 第二阶段团队冲刺-seven

    昨天: 合并程序(添加打印txt). 今天: 整体调试程序继续优化. 遇到的问题: 解决前两天的问题.

  5. SqlHelper——数据库小助手

    SqlHelper其实就是一个类. 早就听说过"SqlHelper"这个名词,也查过相关的资料,但还是一头雾水.当真的去实践去用它时,就会发现其实它没那么神秘. 当敲第一个窗体的时 ...

  6. 用canvas实现鼠标拖动绘制矩形框

    需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.mi ...

  7. [ARC068F] Solitaire [DP]

    题面 传送门 思路 单调性 首先,显然可以发现这些数在放进双端队列之后肯定是一个$V$形的排布:1在最中间,两边的数都是单调递增 那么我们拿出来的数,显然也可以划分成2个单调递减的子序列(因为我们也是 ...

  8. 命令__shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释:变量说明:$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的 ...

  9. 怎么用tomcat对socket接口的程序进行调试

    对socket(套接字)的demo方法大多都是用main方法进行测试的,那如何用tomcat进行测试呢? 这里需要借助一个工具:工具的名字是:Sockettool.exe .下图是该工具的内容.连上监 ...

  10. MySQL的菜鸟级操作

    windows下启动和关闭mysql 启动(windows): 在命令行下,进入到mysql安装路径的bin文件夹下执行:net start mysql 关闭(windows): 在启动的情况下执行: ...