摘要: 不知道大家有没有“谈Socket色变”的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之。哈,Socket真的那么恐怖吗?其实这话一点也不假,Socket有时候真的不太好操控,也不好维护,但不管怎么样,我们还是要面对它的,没准Socket是一位大美女哦。关于Socket的前世今生就不用我详述了,关于她的历史,已经不少人仁志士为她立传写著了,像我们国内的百度百科、互动百科等;全球著名的如维基百科之属。而且,能加入WP开发的学习行列的,我想各位对.NET的其它技术肯定是有一定基础的。我也相信,各位同仁过去一定也写过与Socket打交道的程序。那么,WP中的Socket又将如何呢?前提 阅读全文
posted @ 2012-07-24 20:56 songtzu 阅读(311) 评论(0) 推荐(0)
摘要: 在进行WP开发之前,与其它开发技术一样,我们需要简单了解一个WP应用序的生命周期,我们不一定要深入了解,但至少要知道在应用程序生命周期内的每一阶段,我们应当做什么,不推荐哪些操作等,这也是为了让我们开发出更高性能,更优秀的应用程序打下坚实的基础。下图是官方给出的WP应用程序执行模型图。在上图中,我们要注意以下四个事件:1、Launching 事件。说白了,就是应用程序刚启动时触发的事件,由于这个事件的一点特殊性,尽量不要在该事件处理程序中做大量的操作,比如比较耗时间的作业,为什么呢?你想想,如果你的某个操作需要消耗大量时间的话,那么,你肯定会发现,程序启动的速度很慢,这样一来,用户会很不爽,用 阅读全文
posted @ 2012-07-24 20:46 songtzu 阅读(216) 评论(0) 推荐(0)
摘要: 为什么叫室内装修呢?呵呵,其实说的是布局,具体些嘛,就是在一个页面中,你如何去摆放你的控件,如何管理它们,你说,像不像我们刚搬进新住所,要“装修”一番?买一套什么样的茶几和杯具(我说的“杯具”指的是原意,不要理解错了),或者沙发什么的,该怎么放,摆在哪里好看,其实,我们做界面设计也是差不多这个道理。相信我们下过象棋就知道,棋盘上有横向的,纵向的很多网格线,而棋子就是参照这些网格线来放置的,对,在WP页面布局中我们把这样的布局称为网格布局,对应的控件为Grid。千万别小看这个Grid控件,它可是非常好用的,而且也比较灵活,对的,当我们创建一个新页面时,VS为我们生生的XAML中,正是使用了Gri 阅读全文
posted @ 2012-07-24 20:45 songtzu 阅读(144) 评论(0) 推荐(0)
摘要: 在开如之前,我想更正一个小问题,之前我在第一篇文章中说,Visual Studio Express for Windows Phone的中文版没有简体中文,那是因为我是在英文主页上下载的,语言选择列表中只有一个中文,但是繁体的,后来,我发现Windwos Phone SDK是有简体中文版的,顺便我也给出下载地址。http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=0a373422-6680-46a7-89e1-e9a468a14259可以在线安装,如果你的网速不给力的话,可以下载ISO镜像本地安装。----------- 阅读全文
posted @ 2012-07-24 20:45 songtzu 阅读(218) 评论(0) 推荐(0)
摘要: 俺们都知道,智能手机可以通过旋转手机来改变屏幕的显示方向,更多的时候,对于屏幕方向的改变,我们要做出相应的处理,例如,当手机屏幕方向从纵向变为横向时,可能要重新排列页面上的控件以适应显示区域的变化。前面我们讨论过,Silverlight for Windows Phone的页面布局有三个常用的布局控件,那么,当屏幕方向改变后,我们所做的对布局的更改基础上是基于这几个容器进行的操作。本文我将通过三个示例来分别说明。开始之前,先说一下PhoneApplicationPage类的OrientationChanged事件,该事件就是当屏幕的方向改变之后发生,我们从事件参数OrientationChan 阅读全文
posted @ 2012-07-24 20:44 songtzu 阅读(228) 评论(0) 推荐(0)
摘要: 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还是有必要了解一下的。一、到底该不该设置“后退”操作?因为手机的硬件层就有一个“回退”按钮,按理说我们不需要在程序中再添加什么回退按钮之类的,不过,还是有必要看看如何手动加入回退功能。1、新建一个WP应用项目。2、除默认的主页外,新建一个页面Page2.xaml。3、在主页上放一个按钮,编写Click事件处理代码,导航到Page2。[csharp]view plaincopyprint?privatevoidbutton1_Click(objectsender 阅读全文
posted @ 2012-07-24 20:43 songtzu 阅读(244) 评论(0) 推荐(0)
摘要: 吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序除外),我们要处理窗体之间的切换;同理地,在进行Web开发的时候,我们的Web应用程序可能也不止一个页面,我们要处理页面之间的切换。当然了,在我们的手机应用中,同样需要这种操作,我们称之为“导航”,作为开发者,我们全盘操控页面之间的切换,所以说,我们也当了App的“总舵主”。一、如何进行导航。进行页面导航的一种简单方法就是使用HyperlinkButton控件的NavigateUri属性来指定要导 阅读全文
posted @ 2012-07-24 20:43 songtzu 阅读(216) 评论(0) 推荐(0)
摘要: Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件。一般而言,如果不是过于复杂的界面布局,使用默认控件就足矣。相比之下,Android SDK中尽管提供了许多可视化控件,但你会发现,实际开发用到的并不多,而且很多控件完全只是摆设,既没有公开相应的操作方法也没有更多可用于开发者自行处理的监听器(这里我习惯翻译为监听器,在安卓里面没有像C#那样使用事件,而是new一个监听器,当然原理是相似的)。除了游戏开外,我们在WP上基本上是使用Silverlight,因此,WP的大部分控件都来自Silverlight(银光)。一、Tex 阅读全文
posted @ 2012-07-24 20:42 songtzu 阅读(175) 评论(0) 推荐(0)
摘要: 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的。啥是无状态?如果我们玩过Web开发就明白了,当你在当前页面输入一些内容,然后退回到前一页面,再前进到该页面,就会发现,之前输入的内容可能会没了。再比如吧,你在页面A中进行了数据绑定,点击按钮后进行查询并把查询结果显示在表格中,然后你点击一个超链接,跳到D页面,然后你再从D页面退回A页面,你会发现,刚才查询的结果就不会显示了。这就是无状态,也就是说,在你导航离开当前页面后,当前页面不会保留任何操作相关的数据。在手机应用程序中同样如此,所以,在导航离开当前页面时保存状态信息,而在用户再次回到 阅读全文
posted @ 2012-07-24 20:42 songtzu 阅读(172) 评论(0) 推荐(0)
摘要: WP控件大部分都可以从Silverlight中继承过来,这里我也只能拿一部分作演示,对于其它控件如何使用,可以参考SDK相关说明以及Silverlight SDK文档。一、RadioButton控件。这是一个单选控件,不用多解释,我们见得多了,N选1,控件是否被用户选中,由IsChecked属性标记。另外,要注意的一点是GroupName属性,它输入一个分组名,这个名由我们自己来取,目的也是为了分组,因为是单选,所以,一个容器中可能有N多个RadioButton控件或都有多组RadioButton控件,因此,组名就发挥了作用,也就是说,同一个组内的只能选一个,比如,有一个组A,A中包含3个Ra 阅读全文
posted @ 2012-07-24 20:41 songtzu 阅读(240) 评论(0) 推荐(0)
摘要: 很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的。通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么。要做到这些并不复杂,只要用到一个类就足矣—— InputScope,它有一个Names属性,包含InputScopeName列表,而InputScopeName的NameValue是一个枚举值,说到底,显示什么样的屏幕键盘就取决于该枚举值。非常多的内容,至少每个枚举项表示什么,就没有必要一一说明,大家参考SDK文档就可以了。上面是理论部分,是不是这么神呢,下面我们用实践来证明吧。启动你的VS,然后新建一 阅读全文
posted @ 2012-07-24 20:40 songtzu 阅读(155) 评论(0) 推荐(0)
摘要: 对“磁贴”的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面上那一块块像地板的玩意儿,就是磁贴了。(图:磁贴)在上图中,我们很直观地看到磁贴图块的“真”面目,呵呵,其实很明显,这个设计真的很有个性,老实说,WP刚推出的时候,很多人说它这个那个的,其实这些人只过是起起哄罢了。我是挺喜欢桌面上那一块块的图块的,这也是WP第一次给我留下的深刻印象,毕竟在安卓和IOS上,我们看到的都是传统手机的图标显示方式,而WP总让我觉得很有个性。好的,看完了整体的,我们来看看局部的,好吗?别小看这些正方形的图块,里面可是大有文章的哦。不信?一起去瞧瞧。磁贴的一个图 阅读全文
posted @ 2012-07-24 20:40 songtzu 阅读(236) 评论(0) 推荐(0)
摘要: 英文原文:smashingmagazine 导读:Windows Phone 7 引进了一个全新的内容管理和用户界面,命名为Metro的设计语言和理论。微软这次所看准的市场和用户群也与之前的老一代 Windows 不同(终于转变了):从针对商业和技术用户到普通用户,线上,线下的生活紧密链接的新兴用户。 对话设计人员 我们就不强调设计在手机应用上有多重要了。WP7是个非常不同于其他手机平台的操作系统,虽然现在还在起步阶段,业内对它还是很看好的。设计人员应该走在开发之前对它的平台和用户界面进行了解。其二,微软最终将会把 Metro 引入 Windows 8,打造一致性的手机、电脑界面。Win... 阅读全文
posted @ 2012-07-24 20:39 songtzu 阅读(173) 评论(0) 推荐(0)
摘要: 数据模板,如果你仅仅听到这个名词,你一定很迷惑,什么来的?用来干什么的?不急,亲,今天,我们一起来探索一下吧。用白话文说,数据模板就是用来规范数据的显示方式的,关于模板,估计各位不陌生的,大家应该玩过PPT吧,都做过演示文稿吧,对啊,PPT里面有很多模板的,明白了吧?不明白?那你一定填过表吧,如果报考什么考试的,你肯定会被要求填一些什么报名表之类的,或者说,找过工用吗?是啊,做简历也有简历模板。模板的用法就像做填空题,有了部分规范的内容,然后你按照这个规范,在特定的位置填上恰当的内容,你总不能说把你的姓名填到“性别”那里去吧,这就不符合规范了。好了,废话讲了不少,下面进入正题,你想想,哪些控件 阅读全文
posted @ 2012-07-24 20:38 songtzu 阅读(216) 评论(0) 推荐(0)
摘要: 活字印刷术是我国“四大发明”之一,毕昇在发明活字印刷术之后,他很快发现一个问题,随着要印刷资料的不断增加,要用到的汉字数目越来越多,于是,他必须寻找一种有效的办法去管理那些刻有汉字的立方体(暂且就叫立方体,其实的确是个立方体),所以,他就和助手们一起努力,为这些立方体进行记录,有标识地放好,在印刷过程中用到哪些字,就直接取出来,不用了就放回去,既环保又方便。这就是资源,水、空气、阳光也是资源,煤、铁矿物也是资源,只不过有些可再生,有些不可再生罢了。何为资源?资源就是客观存在的,当我们需要时可以拿来利用的一切可支配或可重新组合的东西,如人力资源、人脉资源等。如果做过网页,应该了解CSS是用来干啥 阅读全文
posted @ 2012-07-24 20:37 songtzu 阅读(220) 评论(0) 推荐(0)
摘要: 在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的多个控件来讲是大大提高效率,我们不必要为每个控件做重复的动作。下面是一个TextBox的样式示例,我们希望通过引用资源中的样式,使得页面上的所有TextBox控件都具有统一的外观,而且都只能输入数字。[html]view plaincopyprint?<phone:PhoneApplicationPage.Resources><!--不带key的样式,应用于所有TextBlock 阅读全文
posted @ 2012-07-24 20:36 songtzu 阅读(219) 评论(0) 推荐(0)
摘要: 前面在讲述导航的知识,也讲了控件,也讲了资源,样式,模板,相信大家对UI部分的内容应该有了很直观的认识了。那么今天讲什么呢?不知道大家在练习导航的时候是否发现一个问题?当我们向页面传递一个参数的时候,是没问题的,但是,如果我们在XAML中使用这样的URI时,你敢保证它还能正常运行呢? /PageaTest.xaml?name=小强&age=100你发现,嘿,咋回事了?怎么报错了?不知道有没有去思考,为什么呢?好,先问你一句,你学过Web开发吗?或者说,了解HTML吗?如果你了解,好,你已经找到答案了。哈哈,对了,就是编码和转义的问题,“&”符号用在XAML中同样需要转义,但你一 阅读全文
posted @ 2012-07-24 20:35 songtzu 阅读(219) 评论(0) 推荐(0)
摘要: 变换不是一个好理解的概念,不是吓你,它涉及很多有关代数,几何,以及线性代数的知识。怎么?被我的话吓怕了?不用怕,尽管我们未必能够理解这些概念,只要我们知道怎么使用它们就是了。其实,变换就是平面上一种坐标变化,听起来很抽象,但,只要我把它说具体了,你就会觉得不抽象了。相信各位如果玩过Photoshop,或者其它的绘图软件,应该知道什么叫做旋转,什么叫做倾斜,什么叫做平移……是的,这些就是我们今天要聊的变换,好了,现在你是不是可以坐下来喝一杯珍珠奶茶来放松一下呢?哦,对了,珍珠奶茶尽量少喝哦。好,闲话少吹,开始今天的表演。一、TranslateTransform。这个应该算是最好理解了,就是平移嘛 阅读全文
posted @ 2012-07-24 20:34 songtzu 阅读(233) 评论(0) 推荐(0)
摘要: 三维效果也可以叫透视效果,所以,我干脆叫三维透视效果。理论知识少讲,直接用例开场吧,因为这个三维效果其实很简单,比上一节中的变换更省事,不信?一起来做一做练习吧。练习一:把对象沿Y轴旋转45度。默认情况下,旋转中心都是在中心位置上,如Y轴中心。而至于旋转的角度,哪个方向是正值,哪个方向是负值,嘿,你自己动手试一下就知道了,我相信你能理解的,不然,Hello Kitty嘲笑你的。好的,由于是第一个练习,我们先来说说X、Y、Z三个坐标轴到底在哪,X轴不用说了,就横着放的那个了,Y轴呢,当然是竖着的,那Z轴呢?你猜?知道这三个轴是互相垂直的,你会猜的,在哪?在图上看不到?为什么呢?是啊,Z轴正指向你 阅读全文
posted @ 2012-07-24 20:33 songtzu 阅读(196) 评论(0) 推荐(0)
摘要: 前面说的那么多控件都是“静态”的,都是“哑吧”的,今天,你有没有兴趣研究一下,既能“有声有色”又操作简单的控件吗?如果有,请随我来。MediaElement播放多媒体文件。首先,隆重介绍一下MediaElement,为什么要隆重呢?因为它简单,真的,你一定会玩的,但是,MediaElement功能强大,它可以播放音频和视频,只要支持的格式就行了。要设置播放的音频或视频文件,你只需要设置Source属性即可,它其实就是一个URI,如果要播放你项目中的媒体文件,你先要把媒体文件添加到你的项目中,把它的生成操作设置为资源,不用我说了,都会了吧。你一定会问,能播放网络的URI指向的媒体文件吗?呵,你试 阅读全文
posted @ 2012-07-24 20:32 songtzu 阅读(223) 评论(0) 推荐(0)