随笔分类 - Windows phone 8
1
Windows phone 8 开发相关技术文章
摘要:理论基础对于如何在WP8上创建单元测试工程,在这里首先提供一个MSDN的文档作为参考。 http://msdn.microsoft.com/en-us/library/windowsphone/develop/dn168930%28v=vs.105%29.aspx 文章清楚的描述了搭建Windows phone 单元测试工程的步骤。但对于持续集成我们需要的是通过命令行来完成单元测试...
阅读全文
摘要:HttpClient作为.net4.5新增的Http库除了对于async/await形式的异步支持外,还向我们展示了其强大的扩展能力。 【类库的设计】 让我们先看下Httpclient的设计图: 图中我们可以清晰的看出对于HttpClient库而言其请求的过程:从Request发起,经过De...
阅读全文
摘要:【前言】Blend自诞生那一天起就伴随这开发者如此的评价: 有VS还用Blend干啥,直接码代码就好了。 Blend会生成一堆垃圾无用代码,很不爽。 对于这类我只会在心里评价,当你并不真正了解一样事物的情况下,就给这个东西扣帽子,实在很不公平。作为程序员首先要明白时间的宝贵和效率的重要性,更应了解各种效能工具,Blend便是其中一个,如果你仍然觉得学怎么用Blend纯粹是浪费时间, 那么恭喜你,后面的文章可以忽略了:-) 【本文讲述的内容】使用blend为程序添加设计时的数据。 【本文适用的场景】很多应用由于本身的性质决定了,其数据来源是远端网络,因此调整UI时非常不方便,多数情况调UI的..
阅读全文
摘要:【MVVM的定义】MVVM的目的是什么?简单总结起来一句话:分离UI逻辑和业务逻辑。这一点和被大家熟知的MVP和MVC是一致的。下面详细来说明下这个问题,下面一段英文来自Msdn:The Model-View-ViewModel (MVVM) pattern helps you to cleanly separate the business and presentation logi...
阅读全文
摘要:单元测试对工程质量带来的作用就不详细说明了,本文只讨论如何在WP开发环境下搭建测试工程历史从WP7时代官方是不支持UnitTest工程的,因此需要采用WPToolkitTest这个工程来实施单元测试,可参考Nokia Develop上的文章:地址 这种方式来搭建的测试环境,测试时需要在模拟器或者真机上点击开始测试按钮进行测试,如此方式笔者认为并不友好 到了VS2012Update2发布之...
阅读全文
摘要:一、使用nuget添加起始工程 二、修改App.xaml文件和App.xaml.cs文件AppBootstrapper介绍:AppBootstrapper根据中文的直译可以看出来此类的大概的作用,但笔者总结为:1、负责接管程序生命周期中的事件(Lunch Deactivate等)2、配置IOC容器3、添加自定义的命名协定1、负责接管程序生命周期中的事件:之前的app生命周期相关的...
阅读全文
摘要:问题的产生在WP开发过程中难免遇到统计等相关的数据回收,那么当使用DeviceStatus.DeviceName这个来获取设备的名称时经常会得到类似下面的设备信息: 可以看出这样的数据很不直观,并不能一眼就弄清楚究竟是什么设备。如何解决解决问题的思路其实很简单,我们只要建立一个字典将这些设备信息与实际型号对应即可。很值得高兴的是已经有人在之前做了这个工作了: https://gi...
阅读全文
摘要:前言·貌似公司里很著名的一句话,在这里套用过来了,WP研发工程师,首先是WPF/SL研发工程师,WPF/SL研发工程师首先是是个C#研发工程师,C#研发工程师首先Windows研发工程师。Windows研发工程师首先是个研发工程师。So,分为4个模块来推荐一些比较不错的书。(心血之作,诚意推荐,让我吐会儿血……)·标题的C#加上了括号,意思是下面的很多书籍是不限编程语言的·如果下面的书都看完了,那么恭喜你,已经脱离了代码新手村,不用再和史莱姆哥布林等小怪玩儿了。·作为计算机相关专业的学生, 很遗憾,由于能力所限,暂时未能接触到算法相关的书籍。研发工程师书
阅读全文
摘要:【问题的提出】在开发过程中我们经常会遇到将UI同学提供的效果图转化成实际的页面,而在这过程中,多数时候Blend等设计工具默认情况下并不能提供很好的可视化支持。举个简单的例子来说下吧: 很简单的一个页面,里面longlistSelector Binding到了ViewModel的DataList上面DataList的定义如下: 非常简单的逻辑,那么我们在设计ItemTe...
阅读全文
摘要:【问题的背景】相信有些经验的WP研发同学都会遇到下面的问题:系统控件以及WPToolkit中大量使用了PhoneAccentBrush这个画刷(这个画刷定义的是系统的强调色,即用户选择的主题颜色),以致为了满足UI设计的需求,为了一个色值而定义了不下100行的xaml代码,其中只有一行用来修改颜色。2、使用Textblock的时候忘记设定Foreground导致用户把主题切换到白色的时候,很多字看...
阅读全文
摘要:【背景】很多时候在做WP开发的过程中会遇到数据需要分页获取,根据微软官方的推荐方式,建议实现为Market中类似的体验,即滑动到列表的底部的时候加载更多的数据。 这一需求在早起WP7.1时代实现起来是很费劲的,需要借助WP Toolkit 中的LongListSelector,而自从LLS被微软扶正之后这一需求的实现有了更官方的方法。 【实现思路】LLS传承了Listbox UI虚拟化的特性,所谓UI虚拟化即列表数据源中的数据不会一次性根据ItemTemplete将所有数据UI化,而是随着列表的滑动,随时将数据UI化,或者将UI化的数据释放掉。举例说明下更直观: 比如,LLS数据源中有1W条.
阅读全文
摘要:最近工作中常常被问到如何降低WP内存使用,便再一次开始研究内存问题,首先发现了LonglistSelector使用的一个常见问题:概述若将Longlistselector 控件的ItemsSource设置为ViewModel中的一个ObservableCollection集合,那么应该值得注意内存问题。 问题的产生 下面的demo中,模拟了如下场景ItemSource Binding到了Page以外的静态ObservableCollection上。那么如果我们的程序结构如果是 MainPage->LoginPage 的话,来回在MainPage和LoginPage间切换就会导致内存中有多
阅读全文
摘要:背景Windows Phone 8 开发过程中Tombstone的处理真是让我们又爱又恨,它能让程序看起来一直在运行。但处理墓碑却是个很麻烦的事情,传统的方式我们需要在程序Deactived事件触发后,将需要保存的状态放到State中,然后用户回来后再加载出来。而如果我们的程序采用MVVM架构,情况会更复杂,有多复杂相信每个人都有所体会。话不多说,让我们继续看CM框架中神奇的墓碑处理。 从...
阅读全文
摘要:背景对于MVVM 架构的WP程序,一个很关键的问题就是导航,以及导航传参。有过经验的人很清楚WP导航只能在View中进行,并且导航参数也只能在NavigatedTo等View的事件中获取,如此我们便不得不在xaml.cs文件中加上处理,以获取导航参数然后再通过导航参数构造ViewModel。这个过程很痛苦,因为我们不得不再两个文件中来回切换来看我们的逻辑代码。 那么接下来我们看下CM作者的...
阅读全文
摘要:介绍MVVM的出现给WPF Silverlight程序定义了程序的框架,MVVM可以解决业务层和UI层的耦合问题,更多优点不再赘述。在WP手机端,很多工程也都采用MVVM进行架构,比较常见的工具集是MVVM Light Toolkit 。它被应用在很多已知WP项目中,也有一些自己实现的MVVM架构工具多数也都基于此。而我们今天要说的是Caliburn Micro这个用于MVVM架构的Framework。 首先对比下MVVM Light Toolkit 和Caliburn Micro: MVVM LightCaliburn MicroView和ViewModel之间的通信事件:通过EventT.
阅读全文
摘要:背景WP系统一向以系统流畅著称,这其中主要归功系统内程序页面间跳转的流畅动画。但很可惜的是sdk本身并没有对应用内使用这些动画效果进行支持。纵观国内WP market 加入页面跳转动画效果的APP也很少(主要原因在于多数APP都在赶功能=。=)但是就移动端而言用户体验应该是时刻关注的重点,因此为程序加些动画效果会让整个APP更加生动。 对于页面跳转动画的实现Toolkit中有支持,实际...
阅读全文
摘要:承接上文继续讲解WP8 Fast Resume的实现 (二)存在Second Tile 的情况 我们先定义我们的程序结构如下: 导航关系为:MainPage->Page1->Page2MainPage可以将Page2 Pin到桌面,如此在桌面上存在两个程序入口:1、主图标,点击后启动客户端进入MainPage2、第二图标,点击后会直接进入Page2上述这种场景在多数程序中会存在,对于这种情况,如果需要启动Fast Resume 功能,之前的处理会存在问题当用户浏览到Page1然后按Home切出,再次点击第二图标时,程序会取消到Page2的导航回到Page1,这在逻辑上是不正确的,所
阅读全文
摘要:(一)概述Windows phone 8 新添加的很重要的一个特性就是 Fast Resume。这个特性应用的场景如下: 对于wp7而言,用户浏览一段时间app内容后,如果从程序菜单栏点击app图标,那么程序会重新从Mainpage开始启动,而在wp8我们可根据业务需求,重新点击app图标后,回到之前浏览的页面。引用madn上的图片来直观的说明下: 图中用户进入程序后,进入Page1...
阅读全文
摘要:Windows phone 8 这个新平台带给我们的惊喜还是很多的,其中内建支持中文语音命令,这点让人印象深刻. 我们可以通过编码为WP8程序添加语音交互的功能.比如场景如下: 拿人人客户端举例:用户可以任意界面长按home,然后对着手机说:"人人 发状态"那么这种场景下如果微博内部进行了处理,便可以相应并进入状态发布页面。如此是很棒的用户体验。那么我们要如何处理呢? 下面我们来模拟下这个场景(事实上人人客户端确实支持语音命令:-)) 实现 1、配置语音控制文件 需要配置如下xml文件:<?xml version="1.0" encoding=&q
阅读全文
摘要:不得不说Windows phone 改为NT内核之后相当的给力,ProximityDevice就是内核里面的东西,在Windows命名空间下。Proximity cannot be tested using WindowsPhoneEmulator. You should test proximity using a WindowsPhone8 device.Bluetooth can...
阅读全文
1