摘要: 背景微软推出UAP 推荐使用响应式的UI,但是难免遇到一些特殊情况需要使用不同的Page来在不同的设备显示。微软目前最新的VS2015在10074上安装后能够支持这个功能特性,只是暂时没有文档介绍。我拿到了Demo后整理了一下建立工程的使用这个特性方法:使用方法1 首先建立一个UAP工程。2 在工程...阅读全文
posted @ 2015-08-18 09:11 kiminozo 阅读(159) 评论(0) 编辑
摘要: 使用Effective pixels有效像素设计UI什么是缩放像素和Effective有效像素:当你的应用程序运行在Windows的设备,系统用一个算法控制的规范,字体,和其他UI元素显示在屏幕上。该算法考虑了距离与屏幕密度(每英寸像素)为感知大小优化的(而不是物理尺寸)。该算法保证了24px字体在...阅读全文
posted @ 2015-08-18 09:09 kiminozo 阅读(103) 评论(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 阅读(1089) 评论(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 阅读(803) 评论(1) 编辑
摘要: 刚刚到新公司发现很多同学在用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 阅读(186) 评论(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 阅读(1581) 评论(1) 编辑
摘要: Bangumi 番組計劃 手机客户端卖个纯广告,最近完成了一个ACG网站的手机客户端程序,欢迎下载:http://www.windowsphone.com/zh-CN/apps/14b39a30-7e5a-4427-88ed-fa40d7e841c1Bangumi 番组计划 手机客户端。 轻触屏幕,在手机上记录你曾经看过的动画、书籍、音乐; 独特的收视进度管理功能让你不必担心将看过的章节下载第二次;在乐园里游玩了解各类符合你口味的讯息动向,或到小组里寻觅趣味相投的伙伴。只需要一个 Bangumi 帐户,你就可以拥有这一切。控件共享:里面的一些自己写的控件我将它们共享出来:WP7应用开发笔记 继阅读全文
posted @ 2012-03-25 17:30 kiminozo 阅读(840) 评论(0) 编辑
摘要: 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 阅读(2429) 评论(11) 编辑
摘要: 我在写一个类似tabcontrol的选项控件,在很多网站的Menu的效果,不知道怎么取名字,暂时就叫TabSwitch吧。效果如下:TabSwitch控件要点类似横排的单选框组,可以多个选项卡,只能选择一个。可以点击其中一个选择一个选项,选中后背景图块移动到选中项,背景图块的刷子可以自定义支持选中事件和选择项的绑定。为了提高视觉效果,有一个动画过度。实现控件要点的方法描述1 继承ItemsControl控件可以容纳多个Item,并添加TabSwitchItem类2 图块用一个Rectangle搞定,为了实现移动位置将RenderTransform设置为CompositeTransform。3 阅读全文
posted @ 2012-03-19 17:41 kiminozo 阅读(2025) 评论(4) 编辑
摘要: 用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 阅读(1898) 评论(4) 编辑
摘要: 最近在写一个新的APP程序,需要使用评分功能,WP的Toolkit里面没有包含,只能自己写一个了。评分控件要点评分控件已经很熟悉了,还是总结一下要点。由10个(可配置)横排的五星组成,默认非高亮色(灰色)得分由从左到右高亮(如红色,颜色可配置)显示得分数量的五星,控件能够提供获取和设置得分的属性。可以点击其中一个五星修改评分。为了提高触摸体验,支持拖动控件修改得分根据要点设计控件根据要点1设计控件布局Horizontal排列的StackPanel(包含在ItemsControl 控件内部) 和 绘制五星的Path 组成。最上面提供一个透明的Rectangle扩展触摸空间(WP只能在绘制的控件上阅读全文
posted @ 2012-03-11 19:57 kiminozo 阅读(1800) 评论(13) 编辑
摘要: 写篇短博客的称赞一下 slToolkit 里的TiltEffect。在触控界面设计里面,对触控的响应是非常重要的,点击后控件作出一定的倾斜响应效果,有助于提高体验。在Silverlight里面有xyz的倾斜轴可以自己实现这个效果。不过 Toolkit更简单只要在容器里面添加附加属性 slToolkit:TiltEffect.IsTiltEnabled="True" 就OK了。太强大了,我不得不佩服一下。阅读全文
posted @ 2012-03-05 09:34 kiminozo 阅读(749) 评论(3) 编辑
摘要: 享元模式是使用共享部件减少内存占用享元模式http://zh.wikipedia.org/wiki/享元模式享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。典型的享元模式的例子为文书处理器中以图形结构来表示字符。一个做法是,每个字形有其字型外观, 字模 metrics, 和其它格式资讯,但这会使每个字符就耗用上千字节。取而代之的是,每个字阅读全文
posted @ 2012-02-29 21:43 kiminozo 阅读(373) 评论(0) 编辑
摘要: 作为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 阅读(1959) 评论(6) 编辑
摘要: C#开发中经常需要使用使用异步操作,特别是Windows phone和Silverlight下层的很多IO相关的访问都是异步的。标准异步方法一般都是Begin[Invoke]和End[Invoke]的一对方法,用法就不多说了。我最近在写用命令模式常用的HttpRequest操作,就想将命令包装成异步方法,想了很久使用了下面的方式包装异步:首先是常规的异步调用时序:现在使用包装使用了2个类一个用于包装AsyncCallback,一个用于包装IAsyncResult,来包装这个时序。类的代码如下: /// <summary> /// 异步回调代理 /// </summary>阅读全文
posted @ 2012-02-27 17:18 kiminozo 阅读(1301) 评论(0) 编辑
摘要: 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 阅读(501) 评论(0) 编辑
摘要: 装饰模式是通过包装类动态地往一个类中添加新的行为装饰模式http://zh.wikipedia.org/wiki/修饰模式通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。修饰模式是类继承的另外一种选择。类继承在编译时候增加行为,而装饰模式是在运行时增加行为。FCL中的装饰模式在流处理中装饰模式非常常用,典型的就是GZipStream提供用于压缩和解压缩流的方法和属性。结构如下:其中阅读全文
posted @ 2012-02-22 20:43 kiminozo 阅读(181) 评论(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 阅读(155) 评论(0) 编辑
摘要: 原型模式就是由对象创建当前自身的副本的模式。副本是指深拷贝的内存空间,一般用于比较复杂的对象。原型模式http://zh.wikipedia.org/wiki/原型模式原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。FLC中的原型模式DataTable.Clone方法 是典型的原型应用。克隆 DataTable 的结构,包括所有 DataTable 架阅读全文
posted @ 2012-02-21 21:13 kiminozo 阅读(166) 评论(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 阅读(222) 评论(0) 编辑