0 - 如何从Silverlight和WPF的XAML迁移至Windows Store Apps
2014-09-18 20:11
537 查看
Windows Store Apps的新特性
参考文章:.NET for Windows Store apps overview0.1 应用程序对象和应用模型
应用程序模型启动和生命周期,并且生命周期事件只能在app.xaml.cs中进行编写,而不能由Application标签关联;Windows.Current代表了当前的窗口,使用其CoreWindow属性可以获取该窗口的“句柄”,进而对窗口的属性和事件进行操作;
获取程序包资源的方式,由原来Silverlight中的Application.GetResourceStream改为Package.Current.InstalledLocation,获得的是一个StorageFolder对象,使用该对象去加载文件,通常都是异步方法;
应用程序的启动方法不再只是通过tile启动,有可能通过文件关联的多种方法进行启动,在设计app时需要考虑多种启动模式,并做好相应的数据保存工作;
0.2 .NET编程和类型投射
.NET环境下的一些类型被投射到了Win RT中了,这些类型要么是来自System空间,要么被集成到Win RT的程序集中泛型集合接口,如IVector<T>(IList<T>),IMap<K,V>(IDictionary<TKey,TValue>)等投射关系;
Uri,投射为System.Uri,区别在于:System.Uri可以在初始化时指定Uri为Relative,但是Win RT中的Uri只能在初始化时通过指定FrameworkElement.BaseUri来得到相对Uri路径,如下所示:
CapturedPhoto.Source = new BitmapImage(new Uri(this.BaseUri, "Assets/placeholder-sdk.png"));
IReference<T>投射为INullable<T>,并且支持使用bool?表示可为空值得布尔值;
0.3 通用编程模型
异步机制:async - await机制(TAP);跨线程更新界面:与以前一样,使用DependencyProperty.Dispatcher;
文件和存储区域的读写现在通过StorageFile等API进行操作;
0.4 页面导航
除去Grid App、Split App、以及Hub App(这些模板已经内建了导航和生命周期的功能)以外,现在Win RT Apps采用Frame类进行页面间的导航,Page:代表了可以由Frame导航到的内容。即页面,作为Xaml的根元素。
Frame:控制页面导航功能。
0.5 XAML操作
使用using:取代clr-namespace:/assembly=;在某些情况下Setter.Property可能在Win RT下变得无效,需要指定其属主;
0.6 触摸和输入
鼠标事件由Pointer事件取代;更应该使用手势(Gesture)事件,而不是Pointer事件;
可以为控件选择禁止相应某些触摸事件,通常这对于组合控件中的触摸事件路由冒泡的控制很有用;
对于一些已经有内建手势事件的控件来说(如ListView的滚动),可能屏蔽较低级的Pointer事件,但是内建触摸事件可以使用CancelDirectManipulations关闭;
0.7 控件
Win RT中新添加的控件有SemanticZoom、FlipView、GridView等Guidelines for Windows Runtime apps
Windows 运行时应用的设计
0.8 多媒体
MediaElement:总体上没有变化,可以使用AreTransportControlsEnabled获取默认播放控制按钮;照相功能的实现发生了比较大的变化,帮助文档在这:How to preview video from a webcam (XAML) (Windows),例子在这:Windows
8 Media capture using capture device sample 示例 在 C#, VB.NET, C++, JavaScript 中 用于 Visual Studio 2013
VideoBrush不再可用,使用CaptureElement取代;
最后还是要吐槽一句,WP7升级WP8坑惨了消费者,WP8升WP8.1坑惨了开发者,还是希望在经历这些转型的困难之后,局面能慢慢好起来。
相关文章推荐
- Windows Store apps开发[18]Metro Revealed Building Windows 8 apps with XAML and C#中文翻译全部汇总
- Windows Store apps开发[35]如何创建自己的Windows Store账号来提交Apps
- Windows Store apps开发[15]如何获取设备当前位置
- Windows Store apps开发[33]Part 1:使用Grid App (XAML)模板创建第一个Windows 8 app
- 转:ConfigMgr 2007 SP2中Windows 7操作系统部署如何进行用户状态迁移
- WPF WCF Silverlight XAML
- Windows 2003活动目录DC如何迁移到Windows 2008ADDS 推荐
- WPF,Silverlight与XAML读书笔记第一 - XAML命名空间相关话题
- WPF中,如何使用图像API进行绘制而不是XAML?
- 分享Silverlight/WPF/Windows Phone一周学习导读(12月6日-12月12日)
- silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?
- 如何于撰写 Silverlight 1.0 的XAML时拥有Intellisense
- 分享Silverlight/WPF/Windows Phone一周学习导读(12月13日-12月19日)
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月22日-28日) 推荐
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月29日-12月5日)
- 如何在WPF和Silverlight中取得DataTemplate中的命名元素
- silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?
- 如何于撰写 Silverlight 1.0 的XAML时拥有Intellisense
- 安装Windows SDK for Windows Server 2008 and .NET Framework 3.5之后,WPF和Silverlight没有了智能提示
- [推荐] Silverlight/WPF/Windows Phone 7一周学习导读推荐(11月15日-11月21日)