摘要: 背景微软推出UAP 推荐使用响应式的UI,但是难免遇到一些特殊情况需要使用不同的Page来在不同的设备显示。微软目前最新的VS2015在10074上安装后能够支持这个功能特性,只是暂时没有文档介绍。我拿到了Demo后整理了一下建立工程的使用这个特性方法:使用方法1 首先建立一个UAP工程。2 在工程... 阅读全文
posted @ 2015-08-18 09:11 kiminozo 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 使用Effective pixels有效像素设计UI什么是缩放像素和Effective有效像素:当你的应用程序运行在Windows的设备,系统用一个算法控制的规范,字体,和其他UI元素显示在屏幕上。该算法考虑了距离与屏幕密度(每英寸像素)为感知大小优化的(而不是物理尺寸)。该算法保证了24px字体在... 阅读全文
posted @ 2015-08-18 09:09 kiminozo 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 项目已经移动到http://phone.codeplex.com/,等了几个月和终于Sdk正式版一起出了,之前还自己升级编译的。What's NewRefactored project to support Windows Phone 7.1, 8.0 and more with maximum code sharing.WP8 Map API extensions, including Modern PushPin controlLongListMultiSelector control, including Grid view multiselect.Control themes 阅读全文
posted @ 2012-11-02 16:40 kiminozo 阅读(1336) 评论(0) 推荐(0) 编辑
摘要: WP没有办法直接获取ScrollViewer的位置,但是可以ScrollViewer通过VerticalOffset的绑定监听实现。下面写了一个ScrollViewerListener 用于给ScrollViewer扩展一个VerticalScrollChanged事件。思路是这样的:1 首先给ScrollViewer附加2个属性VerticalOffsetProperty和ListenerProperty.2 VerticalOffsetProperty是VerticalOffset的复制,但是VerticalOffsetProperty在meta里定义了自己的回调OnVerticalOff 阅读全文
posted @ 2012-06-17 20:58 kiminozo 阅读(1160) 评论(1) 推荐(0) 编辑
摘要: 刚刚到新公司发现很多同学在用AutoResetEvent作线程同步,有的人用AutoResetEvent代替了C#的lock,public void Func2(){Console.WriteLine("Func2 WaitOne");autoResetEvent.WaitOne(); Thread.Sleep(1000); //do SomethingConsole.WriteLine("Func2 Set");autoResetEvent.Set();}这种写法我还是真是第一次见到。所以不是很确定,结果我研究了一下果然杯具了,重入后直接死锁了。示例: 阅读全文
posted @ 2012-04-18 23:17 kiminozo 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 在WP的图片库里面选择一张图片会有【共享...】的按钮可以通过彩信、邮件等发送,也可以自定义共享到自己的APP中,如新浪微博就是很好的例子,如何添加自定义共享呢?需要3个步骤1 在程序配置里面声明【共享...】扩展2 在MainPage获取的OnNavigatedTo事件中取得图片信息3 通过Xna里面提供的MediaLibrary来取得媒体库的图片流声明以下内容参考了http://msdn.microsoft.com/zh-cn/library/ff967563(v=vs.92).aspx声明共享选取器扩展打开 WMAppManifest.xml文件 在Tokens元素后面添加<Ext 阅读全文
posted @ 2012-04-06 15:17 kiminozo 阅读(2271) 评论(1) 推荐(6) 编辑
摘要: Bangumi 番組計劃 手机客户端卖个纯广告,最近完成了一个ACG网站的手机客户端程序,欢迎下载:http://www.windowsphone.com/zh-CN/apps/14b39a30-7e5a-4427-88ed-fa40d7e841c1Bangumi 番组计划 手机客户端。 轻触屏幕,在手机上记录你曾经看过的动画、书籍、音乐; 独特的收视进度管理功能让你不必担心将看过的章节下载第二次;在乐园里游玩了解各类符合你口味的讯息动向,或到小组里寻觅趣味相投的伙伴。只需要一个 Bangumi 帐户,你就可以拥有这一切。控件共享:里面的一些自己写的控件我将它们共享出来:WP7应用开发笔记 继 阅读全文
posted @ 2012-03-25 17:30 kiminozo 阅读(1288) 评论(0) 推荐(2) 编辑
摘要: Coding4Fun.Phone.Toolkit 这个库大家应该比较熟悉了吧,里面有一个ToastPrompt提供了本地Toast 方式提示,非常实用。可以参考我这篇文章WP7应用开发笔记(16) 本地Toast 提示。但是ToastPrompt的效果比较简单,如果需要扩展就比较麻烦,下面我来说明一下如何模拟新浪微博类似的Toast。做之前首先看看SL的模拟效果吧:无法观看,请下载直接下载示例 http://files.cnblogs.com/kiminozo/ToastPromptDemo.rar 了解DialogService查看Coding4Fun的源代码,里面主要使用了DialogSe 阅读全文
posted @ 2012-03-22 12:36 kiminozo 阅读(2762) 评论(11) 推荐(3) 编辑
摘要: 我在写一个类似tabcontrol的选项控件,在很多网站的Menu的效果,不知道怎么取名字,暂时就叫TabSwitch吧。效果如下:TabSwitch控件要点类似横排的单选框组,可以多个选项卡,只能选择一个。可以点击其中一个选择一个选项,选中后背景图块移动到选中项,背景图块的刷子可以自定义支持选中事件和选择项的绑定。为了提高视觉效果,有一个动画过度。实现控件要点的方法描述1 继承ItemsControl控件可以容纳多个Item,并添加TabSwitchItem类2 图块用一个Rectangle搞定,为了实现移动位置将RenderTransform设置为CompositeTransform。3 阅读全文
posted @ 2012-03-19 17:41 kiminozo 阅读(2384) 评论(4) 推荐(5) 编辑
摘要: 用SL4模拟的4种效果,ForwardOut可以选中,这个只是一个Demo 正在考虑移植到NavigationInTransition成为页面动画。直接放代码包下:http://files.cnblogs.com/kiminozo/WpAmine.rar大部分代码都参考了:http://blogs.claritycon.com/kevinmarshall/2010/10/13/wp7-page-transitions-sample/中的列表动画。原理是利用各个Item的时间差,这里经过我改造变成了开始菜单。 阅读全文
posted @ 2012-03-12 16:33 kiminozo 阅读(2144) 评论(4) 推荐(5) 编辑
摘要: 最近在写一个新的APP程序,需要使用评分功能,WP的Toolkit里面没有包含,只能自己写一个了。评分控件要点评分控件已经很熟悉了,还是总结一下要点。由10个(可配置)横排的五星组成,默认非高亮色(灰色)得分由从左到右高亮(如红色,颜色可配置)显示得分数量的五星,控件能够提供获取和设置得分的属性。可以点击其中一个五星修改评分。为了提高触摸体验,支持拖动控件修改得分根据要点设计控件根据要点1设计控件布局Horizontal排列的StackPanel(包含在ItemsControl 控件内部) 和 绘制五星的Path 组成。最上面提供一个透明的Rectangle扩展触摸空间(WP只能在绘制的控件上 阅读全文
posted @ 2012-03-11 19:57 kiminozo 阅读(2211) 评论(13) 推荐(4) 编辑
摘要: 写篇短博客的称赞一下 slToolkit 里的TiltEffect。在触控界面设计里面,对触控的响应是非常重要的,点击后控件作出一定的倾斜响应效果,有助于提高体验。在Silverlight里面有xyz的倾斜轴可以自己实现这个效果。不过 Toolkit更简单只要在容器里面添加附加属性 slToolkit:TiltEffect.IsTiltEnabled="True" 就OK了。太强大了,我不得不佩服一下。 阅读全文
posted @ 2012-03-05 09:34 kiminozo 阅读(926) 评论(3) 推荐(1) 编辑
摘要: 享元模式是使用共享部件减少内存占用享元模式http://zh.wikipedia.org/wiki/享元模式享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。典型的享元模式的例子为文书处理器中以图形结构来表示字符。一个做法是,每个字形有其字型外观, 字模 metrics, 和其它格式资讯,但这会使每个字符就耗用上千字节。取而代之的是,每个字 阅读全文
posted @ 2012-02-29 21:43 kiminozo 阅读(539) 评论(0) 推荐(1) 编辑
摘要: 作为Web App访问远程图片是经常的遇到功能,Wp本身提供了Image 很好的支持通过图片的Uri显示图片public ImageSource Source { get; set; }<Image Source="https://www.google.com/intl/en_com/images/srpr/logo3w.png" />为了减少网络流量,需要将图片缓存到本地数据存储中。复习一下WP的本地数据存储:Windows Phone 本地数据存储Windows Phone 应用程序可以使用独立存储将数据储存到手机本地。应用程序可以通过三种方式储存数据:设置 阅读全文
posted @ 2012-02-28 23:05 kiminozo 阅读(2403) 评论(6) 推荐(6) 编辑
摘要: C#开发中经常需要使用使用异步操作,特别是Windows phone和Silverlight下层的很多IO相关的访问都是异步的。标准异步方法一般都是Begin[Invoke]和End[Invoke]的一对方法,用法就不多说了。我最近在写用命令模式常用的HttpRequest操作,就想将命令包装成异步方法,想了很久使用了下面的方式包装异步:首先是常规的异步调用时序:现在使用包装使用了2个类一个用于包装AsyncCallback,一个用于包装IAsyncResult,来包装这个时序。类的代码如下: /// <summary> /// 异步回调代理 /// </summary> 阅读全文
posted @ 2012-02-27 17:18 kiminozo 阅读(1832) 评论(0) 推荐(1) 编辑
摘要: log4net在.net 4.0 ClientProfile无法使用,原因是log4net里面有AspNetTraceAppender、AspNetPatternConverter等使用了System.Web,而 ClientProfile没有包含这个命名空间。解决办法很简单下载 log4net的源代码,将 ClientProfile不支持的类全部去掉,重新编译就可以了。我这里已经编译好了一个:http://files.cnblogs.com/kiminozo/log4net.ClientProfile.zip 阅读全文
posted @ 2012-02-22 21:11 kiminozo 阅读(837) 评论(0) 推荐(1) 编辑
摘要: 装饰模式是通过包装类动态地往一个类中添加新的行为装饰模式http://zh.wikipedia.org/wiki/修饰模式通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。修饰模式是类继承的另外一种选择。类继承在编译时候增加行为,而装饰模式是在运行时增加行为。FCL中的装饰模式在流处理中装饰模式非常常用,典型的就是GZipStream提供用于压缩和解压缩流的方法和属性。结构如下:其中 阅读全文
posted @ 2012-02-22 20:43 kiminozo 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 适配器模式是让一个接口兼容并适应另一个通用的接口的模式。适配器模式http://zh.wikipedia.org/wiki/适配器模式适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。FCL中的适配器模式比较典型的是WindowsFormsHost 类允许在 WPF 页面上承载 Windows Forms控件的元素。也就是将Windows Forms控件适配为Wpf的FrameworkElement结构如下:示例代码:<Win 阅读全文
posted @ 2012-02-22 20:29 kiminozo 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 原型模式就是由对象创建当前自身的副本的模式。副本是指深拷贝的内存空间,一般用于比较复杂的对象。原型模式http://zh.wikipedia.org/wiki/原型模式原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。FLC中的原型模式DataTable.Clone方法 是典型的原型应用。克隆 DataTable 的结构,包括所有 DataTable 架 阅读全文
posted @ 2012-02-21 21:13 kiminozo 阅读(282) 评论(0) 推荐(0) 编辑
摘要: Builder建造者模式 ,它可以将复杂对象的建造过程抽象分割出来。建造者模式http://zh.wikipedia.org/wiki/生成器_(设计模式)建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。FLC中的建造者模式最常用的是StringBuilder 它是简化的建造者模式使用方法如下:StringBuilder stringBuilder =new StringBuilder();stringBuilder.Append("Hello");stringBuilder.App 阅读全文
posted @ 2012-02-21 20:59 kiminozo 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。工厂方法模式来自: http://zh.wikipedia.org/wiki/工厂方法模式工厂方法模式 是一种面向对象的设计模式。通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装。 工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。工厂方法模式实施一种按需分配的策略, 即传入参数进行选择, 工厂方法根据参数进行选择,返回具体的实例。FLC中的工厂方法模式在FLC中比较典型的就是WebRequest.Create(Uri requestUri)方法MSDN的 阅读全文
posted @ 2012-02-15 20:36 kiminozo 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 抽象工厂模式 Abstract Factory 为一个产品家族提供了统一的创建接口。抽象工厂模式来自:http://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82抽象工厂模式(英语:Abstract Factory)是一种常见的设计模式。此模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。FLC中的抽象工厂模式在FLC中比较典型的就是DbConnection .CreateDbCommand方法抽象类DbConnection表示到数据库的连接 阅读全文
posted @ 2012-02-15 20:11 kiminozo 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 单例模式Singleton:一个类仅有一个实例,自行实例化并向整个系统提供一个访问它的全局访问点。单例模式Singleton来自:http://zh.wikipedia.org/wiki/单例模式单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。实现单例模式的思路是:一个类 阅读全文
posted @ 2012-02-15 19:50 kiminozo 阅读(476) 评论(0) 推荐(0) 编辑
摘要: VisualState是什么?VisualState 指定控件处于特定状态时的外观。例如,按下 Button 时,它的边框颜色可能与正常时的颜色不同。VisualState 类具有更改控件外观的 Storyboard 属性。控件进入 VisualState.Name 属性指定的状态时,Storyboard 开始。控件退出该状态时,Storyboard 停止。例如CheckBox就有下面几种状态组:使用 VisualStateManager 通过将 VisualState 对象的名称传递到 GoToState 方法,来进行状态过渡。深入学习:谈谈Silverlight 2中的视觉状态管理http 阅读全文
posted @ 2012-02-12 13:49 kiminozo 阅读(2011) 评论(0) 推荐(4) 编辑
摘要: 最近时间比较少了,完成了本地化语言版本的开发,不过提供更新APP的时候没有通过。原因是这条手动测试没有过。5.5.2 - 内容和主题 无论使用哪种手机主题,应用程序内容(例如文本和可视元素)都必须清楚易读。例如,如果手机主题从黑色背景更改为白色背景,则应用程序的文本和可视元素必须清楚易读。调试是找到的问题是一个背景使用了本地值:黑色,但是在白色主题下文本也会变成黑色所以成了一片黑。使用系统资源{StaticResource PhoneBackgroundBrush}就解决了这个问题。主要还是自己测试太粗心了,反省!系统主题提供了很多资源,比如我使用了的下表。名称类型说明PhoneAccentB 阅读全文
posted @ 2012-02-12 12:55 kiminozo 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 提供在各种同步模型中传播同步上下文的基本功能。,同步上下文的工作就是确保调用在正确的线程上执行。同步上下文的基本操作Current 获取当前同步上下文var context = SynchronizationContext.Current;Send 一个同步消息调度到一个同步上下文。SendOrPostCallback callback = o => { //TODO: ... 阅读全文
posted @ 2012-02-06 21:41 kiminozo 阅读(5628) 评论(0) 推荐(0) 编辑
摘要: CodePlex是微软的开源工程网站,涉及诸多微软最新技术的开源工程,同时也可以建立自己的开源工程,大家应该比较熟悉了吧。ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。而CodePlex支持ClickOnce的在线发布,可以减少安装部署和特别是更新的成本。当然只能是开源程序。下面就介绍一下如何在CodePlex发布ClickOnce应用程序/发布步骤1 在Codeplex申请你的开源项目在Codeplex上注册,添加开源项目并提交源代码,具体过程就不详细介绍了。申请后会得到一个二级域名,我申请 阅读全文
posted @ 2012-02-04 21:43 kiminozo 阅读(660) 评论(2) 推荐(0) 编辑
摘要: WP程序面向的是App Hub市场发布,支持多种语言是一个很重要的需求,也能为程序提供更广泛的用户群。如何实现让程序实现语言本地化呢?使用资源文件熟悉.net开发都知道资源文件中是可以支持多语言与本地化的基本。创建资源文件右键单击项目名称,在“添加新项”对话框中,选择“资源文件”,可以命名为 AppResources.resx。此文件包含应用程序默认语言的资源。最常用的是字符串资源。字符串资源是一种键-值(还有备注)方式的表,如下图。AppResources.resx资源文件会自动生成AppResources类用于获取资源的值。使用资源文件替换文本现在要做的是将所有界面相关的字符串全部换成资源 阅读全文
posted @ 2012-02-01 20:24 kiminozo 阅读(2937) 评论(5) 推荐(6) 编辑
摘要: 哎,上班了没什么时间学习了,谈点小技巧。最近审查的时候遇到一个问题,研究很久才解决,原来是一个小问题就是MessageBox原来的代码是这样的,在没有输入IP的时候提示用户并跳转到配置页面。MessageBox.Show("使用前请先设置接收端IP");GoToConfig();//跳转到配置页面如果在WPF之类的写这样的代码没有什么大问题,但是WP7里面问题就出现了。在MessageBox的模态窗口打开的时候按一下“开始菜单”Win键会发生意想不到的情况就是MessageBox的模块窗口会被关闭,并且返回MessageBoxResult.None然后继续执行GoToCon 阅读全文
posted @ 2012-01-31 20:06 kiminozo 阅读(1079) 评论(7) 推荐(1) 编辑
摘要: 春节期间在学习WP7开发,为了练手开发了一款简单的程序,在这里记录一下设计开发过程给大家分享。本人虽然有几年的C#开发经验,但是wp7程序还是刚刚开始学习。边学边开发边写文章,目录结构可能比较混乱,文章只记录了开发过程的知识点,没有详细的编码过程。如果有什么问题还请各位园友见谅。多媒体遥控器先卖个广告,介绍一下这个程序:寒冷的冬天在电脑上看电影、动漫等视频的时候,是不是不想伸手去按键盘呢,这款软件可以帮助您。此软件是一款迷你的多媒体遥控器,主要适合在客厅、卧室中喜欢用个人电脑看视频的朋友。 此软件能用您的手机方便的远程控制您的个人电脑上的媒体播放器,方便地控制视频播放、音量大小等。此软件使用注 阅读全文
posted @ 2012-01-30 20:06 kiminozo 阅读(3768) 评论(16) 推荐(10) 编辑
摘要: 注册AppHub帐号首先使用Windows Live ID登录http://create.msdn.com/zh-CN 注册帐号,选择个人或者学生。如果想拥有免费帐号,AppHub为学生提供免费1年的使用,需要一个以edu.cn结尾的邮箱作为验证邮箱,如果你已经工作找你的后辈或者亲戚要一个吧。(不行入侵一个,好孩子不要学我) 点击“Get Verified”,然后按提示操作,选国家China,然后选自己edu.cn的邮箱的那个大学,验证之后邮箱会收到验证码Key.在https://www.dreamspark.com/Activate页面,输入从edu.cn那个邮箱中收到的邮件所得到的key, 阅读全文
posted @ 2012-01-30 20:03 kiminozo 阅读(1144) 评论(2) 推荐(0) 编辑
摘要: Toast 通知简介Toast 通知是推送通知的三种类型的其中一种。Toast 通知显示在屏幕的顶部,用于通知用户某个事件,如新闻或天气警报。除非用户通过向右轻拂关闭通知,否则 Toast 将显示大约 10 秒钟。如果用户点按 Toast,则会启动发送该 Toast 通知的应用程序。Toast 通知的元素如下:标题。紧挨着应用程序图标之后显示的黑体字字符串。在 XML 架构中,该字符串定义为 Text1 属性。内容。紧挨着“标题”之后显示的非黑体字字符串。在 XML 架构中,该字符串定义为 Text2 属性。参数。如果用户点按 Toast,则将参数值传递给您的应用程序,而不进行显示。该参数可以 阅读全文
posted @ 2012-01-28 14:07 kiminozo 阅读(1832) 评论(0) 推荐(0) 编辑
摘要: 推送通知是WP开发中一个非常重要的概念,因为我这个项目可能不需要,但是有必要学习一下。MSDN讲得很清楚,园子里也有很多相关文章,这里简单提一下好了。推送通知了解C/S架构的朋友都知道,客户端到服务器的消息传输可以是双向的,客户端即可以主动从服务器获取消息,也可以被动接受来自服务器通知,而不像纯B/S架构浏览器只能主动从服务器获取消息。而且WP手机虽然是C/S模式,但是微软不允许手机被动接收服务器的消息,但是这样无法实现服务器通知。WP提供了一种代理的机制来实现服务器通知,这就是推送通知。推送通知是一种云服务器代理,服务器不能直接向手机客户端发送消息,必须通过云服务器代理发送。MSDN的官方流 阅读全文
posted @ 2012-01-28 13:38 kiminozo 阅读(1924) 评论(0) 推荐(0) 编辑
摘要: 续上一篇对MVVM模式的简单介绍,可以了解到MVVM需要编写许多的自定义Command和Action之类的,而且每个类都需要设置DataContext。操作和代码比较重复,为了减少代码量并统一标准,需要引入MVVM框架提高效率。开源的MVVM框架有: PRISM:由微软提供,和 MEF/Unity 一起用于依赖注入,支持组合命令,可以扩展。MSDN 上有详细的教程和演练。 MVVM Light Toolkit:有 visual Studio 和 Expression Blend 的项目和项的模板。更多信息请看这里,另外可以参考 VS 和 Expression Blend 的使用教程。 Cali 阅读全文
posted @ 2012-01-27 20:47 kiminozo 阅读(4650) 评论(7) 推荐(9) 编辑
摘要: Model-View-ViewModel 设计模式MVVM这个模式在WPF和Silverlight开发中已经非常流行了,因为WP7的应用开发也是Silverlight的,MVVM的一样可以适用。虽然MVVM有不少明确的定义,但是我也没有找到比较统一的来描述它,所以大概说一下我的总结:MVVM和MVC、MVP一样都是为了分离呈现和业务为目标的设计模式,MVVM使用了WPF系列库特有的绑定机制从视图层移除绝大部分的业务处理和业务数据提供的逻辑。于独立的视图模型层更有利于测试。大概结构如下:View更关注界面的呈现,ViewModel更关注业务处理,Model作为之间交互的模型数据。MVVM的绑定 阅读全文
posted @ 2012-01-27 15:37 kiminozo 阅读(3070) 评论(11) 推荐(5) 编辑
摘要: 页面动画就是页面的切换的动画过度效果。平时使用Wp手机的系统程序都是像翻页一样的过度效果,我下面就准备完成简单的添加这样的效果。使用Windows Phone Toolkit其实这个动画效果不需要自己实现,Windows Phone Toolkit 已经封装好了现成库,我们只需要调用就可以了。这里可以下载:http://silverlight.codeplex.com/安装后可以在C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Toolkit 找到[32位系统去掉(x86)],引用到项目中就可以了,里面还有不少增强控件也非常实用 阅读全文
posted @ 2012-01-26 22:02 kiminozo 阅读(2015) 评论(7) 推荐(1) 编辑
摘要: 不知不觉写了很多东西,不过结构有点乱了,写完了需要整理一下。回顾一下界面设计,这草图又要出来献丑了。除了已经实现的圆形触控控件以外,其他按钮都是圆环+图片的方式,有比较有写一个自定义控件,取个名字叫RoundButton。RoundButton类RoundButton具有和Button相同的行为和视觉状态,唯一区别是RoundButton拥有图标那么继承Button并添加依赖属性ImageSource类型为ImageSource。再添加一个ImageBrush用于绘制图片。代码如下: public class RoundButton : Button { protec... 阅读全文
posted @ 2012-01-26 14:12 kiminozo 阅读(1551) 评论(5) 推荐(1) 编辑
摘要: 导航概述Windows Phone 应用程序基于 Silverlight 页面模型,用户可以在其中浏览不同屏幕的内容。具体的可以查阅:http://msdn.microsoft.com/zh-cn/library/ff941091(v=vs.92).aspx通过NavigationService类可以轻松的实现导航:常用的方法是NavigationService.Navigate(new Uri("/ConfigView.xaml", UriKind.Relative));导航到ConfigView.xaml还可以在app里面设置UriMapper注册页面的别名 var m 阅读全文
posted @ 2012-01-26 13:34 kiminozo 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 可以使用 Windows Phone SDK 快速轻松地向应用程序中添加应用程序栏。应用程序栏是沿着手机屏幕底部的一行图标按钮,它们为用户提供对应用程序最常见任务的快速访问。呈现模式有:1.最简Minimized 就仅仅在下面显示...2 普通:3 展开:4 展开+菜单:遥控器界面的应用程序栏首先是遥控器的应用程序栏,因为平时需要操作我用最简方式呈现,为了统一将背景色变成透明这样只能点右边的...才能展开。展开后显示“设置”、“帮助”两个菜单,将背景色设置成黑色。通过监听ApplicationBar的StateChanged事件可以实现,代码如下:private void OnAppBarSt 阅读全文
posted @ 2012-01-26 12:51 kiminozo 阅读(830) 评论(0) 推荐(0) 编辑
摘要: 因为需要在手机上配置IP,我需要一个界面输入IP地址,虽然直接使用TextBox,但是这样不太友好,我希望能够有和Windows网络设置上一样的IP输入框。所以决定写一个自定义控件。设计控件外观4个TextBox和3个显示“.”的TextBlock就可以了,结构很简单:XAML代码如下:<StackPanel Orientation="Horizontal" Height="72" > <TextBox x:Name="TextOctet1"/> <TextBlock Text="." 阅读全文
posted @ 2012-01-26 12:08 kiminozo 阅读(1468) 评论(0) 推荐(0) 编辑