Windowsphone
moxiaomomo
虚怀若谷,大爱无疆
展开
-
WP开发的基础知识小结
(1)C#中string[]数组和list泛型的相互转换 从string[]转list string [] str = { "1" , "2" }; list string > list = new list string>(str); 从list转string[]原创 2012-04-08 17:04:10 · 1337 阅读 · 0 评论 -
windowsphone7数据绑定的一种用法
假如我们自定义了一个UserControl,我们可能需要定义一些这个用户控件特有的依赖属性。但有些时候,我们可能想直接复用父控件的依赖属性;比如有个控件叫MyControl, 里面的根容器为LayoutRoot。在xaml中我想这么定义它: ,然后LayoutRoot的背景也被赋值为White。一种实现的方法是重新定义了Background这个依赖属性,以覆盖原有的Background属性原创 2012-08-28 00:06:38 · 1333 阅读 · 0 评论 -
windowsphone7 关于隐藏虚拟软键盘(SIP)的方法
在windowsphone7中,SIP是无法控制的。当输入框(例如TextBox)聚焦时,那么软键盘就会自动弹出来;当文本输入型的控件失去焦点时,软键盘就会自动隐藏。但有时候,我们想强制隐藏SIP(例如在显示SIP的时候想保存页面信息,并在隐藏SIP后实现页面跳转等),这个时候应该怎么做呢?我想到的第一个方法是,让聚焦的输入控件失去焦点。怎么失去焦点呢,用了一个比较取巧的方法:假如原创 2012-09-06 22:39:45 · 2226 阅读 · 0 评论 -
C#关键字params, ref, out的用法
第一次使用params这个关键字,发觉这是蛮好用的一种参数形式。1、paramsparams关键字用在指定参数可变的场合中。在方法声明中加了params关键字后不能再同时定义其他参数,在声明方法中只允许params这个关键字的存在。示例代码:class Test{ public void TestIntParams(params int[] vals) { if(vals原创 2012-09-09 22:33:20 · 3209 阅读 · 0 评论 -
WPF中的Binding技巧(二)
接上篇, 我们来看一看Elementname,Source,RelativeSource 三种绑定的方式 1.ElementName顾名思义就是根据Ui元素的Name来进行绑定: 例子: MainWindow, Path=Background}”/>转载 2012-09-10 21:21:55 · 4017 阅读 · 0 评论 -
wp7图片截取功能
PhotoChooserTask可以实现系统相册的相片选取,设置ShowCamera属性为true则可以在打开系统相册时提供拍照功能,设置HeadImagePixelHeight和HeadImagePixelWidth属性则可以实现图片的截取功能。设定了图片的尺寸后,选定的图片会出现一个矩形截取区域,在保存后系统会自动完成图片选中区域的截取操作。代码示例:private void On原创 2012-09-14 19:57:32 · 1764 阅读 · 4 评论 -
wp7中Storyboard的示例动画
假如要实现这样一种控件,它的透明度由0平滑过渡到1,再由1平滑过渡到0(也就是忽明忽暗的闪烁效果)。一种方法是定义一个定时器,重复的改变它的透明度。一种方法则是可以通过storyboard来实现这种闪烁效果,代码实现起来更为简洁,代码如下: private Storyboard PrepareShowStory() { Stor原创 2012-09-14 20:18:09 · 2921 阅读 · 0 评论 -
wp7中关于ListPicker的ItemSource的一个疑问
今天意外的发现struct与class之间的一些区别。就是这些区别导致了在使用这两个类型的数据作为ListPicker的ItemSource时的效果不一样。(1)使用struct类型对象作为ListPicker的ItemSource首先定义了一个这样一个struct结构体: public struct MonthListPickerItem { pub原创 2012-09-17 23:16:03 · 1668 阅读 · 1 评论 -
wp7 关于从MemmorySream中复制字节流
刚刚发现一个比较奇怪的现象,从Stream复制数据到byte[]数组后,发现byte[]的数据都还是默认值,见代码:/// /// 从相册中完成获取图像/// private void OnPhotoChooserTaskComplete(object sender, PhotoResult e){ Stream ms = new MemoryStream(); e原创 2012-09-19 22:42:30 · 1587 阅读 · 0 评论 -
C#中Enum用法小结
enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储。(1)默认情况下,枚举中的第一个变量被赋值为0,其他的变量的值按定义的顺序来递增(0,12,3...),因此以下两个代码定义是等价的:enum TrafficLight{ Green, Yellow, Red}enum TrafficLight{ Green = 0, Yellow =原创 2012-10-10 14:50:33 · 50343 阅读 · 2 评论 -
使用VisualTreeHelper获取DataTemplate中的控件
定义为DataTemplate中的控件,无法直接通过x:Name的索引方式来获取,因此必须另想办法。在.net库中有一个VisualTreeHelper类,是专用于涉及可视化树的节点的操作用途。既然控件也存在于可视化树中,也可以使用这种方式来查找节点。貌似还有一种方法,在DataTemplate中有LoadContent的方式,也可以获取其中的根元素。但我试了几遍,没什么反应,只好暂时作罢原创 2012-09-25 21:07:41 · 5775 阅读 · 1 评论 -
C#中foreach语句的一个小问题
想来断断续续用C#也有好一段时间了,今天才发现foreach语句中迭代变量(Iteration Variable)是read-only的,囧~~不过此read-only也是相对的,对于Values-type和reference-type要区别对待。对于值类型,那么foreach中的变量是不能更改的;而对于引用类型,引用类型本身不能被更改,但是引用所指向的空间的数据则可以被更改。原创 2012-11-14 21:57:18 · 2592 阅读 · 0 评论 -
C#中对于Enum类型的遍历
假设有enum类型定义为MyEnumType则可以这样遍历:foreach (MyEnumType type in Enum.GetValues(typeof(MyEnumType))){// TODO: 遍历操作}或者foreach (string name in Enum.GetNames(typeof(MyEnumType))){// TODO:遍历操作}原创 2012-12-06 21:20:31 · 13998 阅读 · 0 评论 -
windowsphone7下定制密码输入框
SDK中提供的PasswordBox很好用,但是不能实现显示密码的功能。个人通过组合PhoneTextBox和PasswordBox来定制了一个用户控件,作为密码的输入框,并可以根据选择来实现隐藏或者显示密码。xaml代码:<UserControl x:Class="CustomControls.PasswordTextBox" xmlns="http://schemas.原创 2012-09-04 22:50:02 · 1968 阅读 · 2 评论 -
C# new,Virtual,abstract,sealed,Override的簡單理解
转载自:http://www.cnblogs.com/scottckt/archive/2007/09/26/906875.html new new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方法,而不是基类的方法。 在不使用 new 修饰符的情况下隐藏成员转载 2012-12-18 10:45:30 · 1161 阅读 · 0 评论 -
《XNA游戏开发》在战机游戏中使用Decorator模式
在之前的关于XNA的介绍中,我们主要讲解了XNA的一些基础,但是将我们在实现一些简单游戏时,众多对象的处理则是一个比较让人头痛的问题。在这里,我们使用装饰模式来解决在现有对象基础上的扩展问题。整个程序包括以下几个类文件:Program XNA入口程序Game1 完成基础数据加载、卸载,游戏进行时数据的更新、图型的绘制。GameEngine 用来定义要扩展对象转载 2012-12-18 00:27:40 · 1039 阅读 · 0 评论 -
WPF中Binding的技巧(一)
在WPF应用的开发过程中Binding是一个非常重要的部分。在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的。这里将实际中碰到过的问题做下汇总记录和理解。1. source = {binding} 和source = {binding RelativeSource={RelativeSource self},Path=DataContext}效转载 2012-09-10 21:23:02 · 4614 阅读 · 1 评论 -
windowsphone7实现文件上传
在基于Http协议的Post请求中,Content-type为application/x-www-form-urlencoded的传输只能传送非文件的数据。如果想用Http的Post方法来上传数据及文件,需要实现Content-type为multipart/form-data类型的协议程序。下面是参考了StackOverflow网站上的一个例子,实现了关于客户端上传文件的功能类,代码如下:原创 2012-08-24 00:50:20 · 2632 阅读 · 0 评论 -
Windowsphone7下载文件的方法
在wp7中下载文件有多种方法,例如使用HttpWebRequest,使用WebClient方法,甚至还可以利用后台进程来下载文件;如果是wp支持的图片等文件,还可以通过控件直接绑定数据源来实现自动下载。使用WebClient的方法可以参考这个比较好的例子:http://www.cnblogs.com/linzheng/archive/2011/11/03/2234971.html利用后台进原创 2012-08-25 16:40:59 · 2440 阅读 · 0 评论 -
关于用户控件的页面跳转问题
因为用户控件页面不支持NavigationService.Navigate(new Uri("/page2.xaml", UriKind.Relative))所以从UserControl页面导航到PhonePage页面,需要用到RootVisual根视图容器里的方法来实现页面跳转: private void OnControl1ButtonClick(object原创 2012-04-08 23:28:40 · 3524 阅读 · 1 评论 -
wp7数据绑定
数据绑定提供了一种数据呈现与交互的简捷方式,使得数据与UI分离,并能自动更新、同步。绑定有绑定目标、绑定源、绑定模式、转换器等要素。。绑定目标为Silverlight控件,可以是FrameworkElement类型的对象,实际上绑定的是该控件的一个特定属性。绑定源为数据对象,也可以是任意的CLR对象。转换器:进行数据类型或格式的转换。绑定模式,三种模式的数据绑定。( 1)O转载 2012-04-08 21:14:23 · 1238 阅读 · 0 评论 -
wp7 ApplicationSettings让我纠结了半天
我在同一个namespace中写了一个结构体和一个类,在这个类中存有这个结构体的对象,例如:namespace Test{ struct CalendarInfo { public DateTime LastDate; public int MemberCount; public bool IsFetival ; }原创 2012-04-27 22:25:25 · 2568 阅读 · 0 评论 -
Windows Phone Mango本地数据库(SQL CE)#2:Linq to SQL
这是Windows Phone Mango本地数据库(SQL CE)系列文章的第二篇文章,这篇文章将会讲解Windows Phone 7.1 Mango本地数据库中的Linq to SQL。什么是Linq to SQL?Linq to SQL是一种O/RM(对象关系映射)框架,他来自于.NET框架中的一部分。它可以使我们将业务对象(model class)映射到数据库表中,转载 2012-07-03 22:38:22 · 1740 阅读 · 0 评论 -
wp图片加载形式/生成属性 content与resource
在进行wp开发时,要注意一下图片的加载形式。在wp7中,资源文件主要有三种BuildAction属性,Resource/Content/None。默认情况下会选择Resource的方式加载。我刚开始学wp开发的时候,碰到了大多数人都会碰到的问题:为什么图片设置成Resource的时候,程序运行时不能图片显示出来,而设置成Content的形式则可以。(1)资源文件的三种生成属性先原创 2012-07-07 15:02:25 · 3537 阅读 · 0 评论 -
wp7自定义及传递EventHandler参数
a.定义参数类类,继承自基类EventArgsusing System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using原创 2012-07-10 20:59:57 · 1808 阅读 · 0 评论 -
WindowsPhone消息推送服务
一.WP消息推送工作方式如果了解C/S架构,我们可以知道客户端到服务器的消息传输可以是双向的,客户端既可以主动从服务器获取消息,也可以被动接受来自服务器通知,而不像纯B/S架构浏览器只能主动从服务器获取消息。而WP手机虽然是C/S模式,但是微软不允许手机被动接收服务器的消息,但是这样无法实现服务器通知。因此,WP提供了一种代理的机制来实现服务器通知,这就是推送通知。 推送通知是一种云服务器转载 2012-07-14 17:26:35 · 8174 阅读 · 2 评论 -
windowsphone中WebBrowser中的页面按级回退功能
在windowsphone应用开发中,我们会常用到WebBrowser这个控件。它可以浏览网页,并且可以在当前打开的网页中单击超级链接,继续打开新的网页。但是在操作中会存在这样一个问题,当按"Back"键希望返回前一个(上一级)网页时,程序会直接跳出当前的网页浏览器,直接返回到上一页面(客户端程序页面)。也就是说"Back"键会使程序返回程序的上一个PhoneApplicationPage,而不是原创 2012-07-13 19:24:25 · 2360 阅读 · 0 评论 -
ListPicker设置默认选中item
在windowsphone7开发中,设置ListPicker的默认选中item需要注意一个问题,SelectedItems是int类型的,如果传入了例如long类型的数据,会导致设置失败。今天因为没留意这个问题,导致了浪费时间在这方面代码检查。直接上代码: private void SetSelectedItems(List selectedItems)原创 2012-07-12 21:46:26 · 2551 阅读 · 1 评论 -
windowsphone中WebBrowser导航异常的处理
我在WebBrowser中实现网页的回退时,使用了方法:Browser.InvokeScript("eval", "history.go(-1)");当网页加载失败后,如果再调用此方法,编译器抛出了关于js方法调用失败的异常,也就是说go()方法调用失效。那么可以这样解决: try { Browser.Inv原创 2012-07-18 22:56:54 · 1787 阅读 · 0 评论 -
windowsphone7 消息推送流程草图
最近在开发网络推送这一个模块,觉得还蛮有意思的于是做了一个小结。下面是自己画的三个简单流程图。(1)注册和提交推送通道uri的过程:(2)关闭推送通道uri:(3)发送和接收toast信息过程:原创 2012-08-05 23:06:57 · 1581 阅读 · 0 评论 -
关于wp7中http的GetResponse抛异常的问题
昨天使用了http请求服务,用的是HttpWebRequest来创建的http连接。结果总是在获取服务器响应状态时出现异常,下面是出异常的代码: try { HttpWebRequest request = ar.AsyncState as HttpWebRequest; Ht原创 2012-08-07 15:59:13 · 2490 阅读 · 3 评论 -
windowsphone7 消息推送Demo
首先是用java来实现简单的Server端(http的请求内容格式可以参考msdn:http://msdn.microsoft.com/zh-cn/library/hh202945(v=vs.92)): /** * 推送toast通知 * @param uriString 推送服务通知uri * @param title toast标题 * @param conte原创 2012-07-29 01:39:45 · 2560 阅读 · 1 评论 -
关于windowsphone中的toast消息推送的小结
刚接触了推送通知机制不久,也写了几个demo,以下是几点小结:(1) 推送toast通知中的格式注意事项:首先xml的内容格式是固定的,如:string toastMessage = "" +"" + "" + "" + "" + "" + "" +"";其中,当param内容为空时,可以省略不写这一节点。同时,在xm原创 2012-07-29 16:05:05 · 3065 阅读 · 1 评论 -
lambda表达式的一个简单示例
在一些情况下,有些函数在程序中只会被一处地方引用或使用,况且这些函数的内容或逻辑并不复杂,那么这样的函数被过多的定义时,会显得冗余。那么一种优化方法是使用lambda表达式,在linq2sql中大量使用了这种表达式。lamda表达式是一种匿名函数,所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。下面是一个小例子,直接上代码:一般原创 2012-07-31 23:39:09 · 1324 阅读 · 0 评论 -
windowsphone7下图片格式的转换
windowsphone7和siverlight中的BitmapImage和Image提供的接口还是很比较大的区别的,总体来说siverlight的封装性更加健全一些。同时在压缩bitmap的时候,siverlight会提供设置和访问图像dpi(dots per inch)和pixel的函数,但是wp7中只能访问和操作pixel。这样的话在wp7下,对于压缩一张图片来说,你可以很方便增加或减少原创 2012-08-30 19:38:15 · 2027 阅读 · 0 评论 -
XAML语法官方全面教程
XAML语言-总体介绍 本主题介绍可扩展应用程序标记语言 (XAML) 语言的功能,并演示如何使用 XAML 编写 Windows Presentation Foundation (WPF) 应用程序。本主题专门介绍了 Windows Presentation Foundation (WPF) 实现的 XAML。XAML 本身是比 Windows Presentation Foundation转载 2012-11-14 21:09:48 · 1973 阅读 · 0 评论