由于我建的三个群都已经满了,但是每天还有很多朋友在加这几个群,为了能和大家更好的交流,大家可以加我的新浪微博 http://weibo.com/u/1766296144,我一直在线的!并且有什么最新的信息等等我也会最早的发到微博上来。
经过大半年的努力,我参与编写的微软官方Windows Phone 7中文版开发新书《Windows Phone 7应用开发指南 》终于出版了!
也终于结束了没有官方中文开发书辑的历史。这本书涉及到了WP7.x开发的方方面面,非常全面,并且还包含了大量的成功开发案例,
是一本从入门到深入的书。这本书的第八章和第九章是由我编写的,有什么问题或建议欢迎在我的博客上或给我发微博喔 http://weibo.com/u/1766296144!
另外我这两章的开发实例也会分享到这个网站的bbs上。
这本书的可以在这里点击购买:http://www.amazon.cn/gp/product/B005UEOH4G/ref=as_li_qf_sp_asin_tl?ie=UTF8&tag=daisy123-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B005UEOH4G

在千吃呼万唤中,终于可以获取联系人和增加联系人了!但是由于增加联系人是以Task方式来实现的,所以无法通过程序实现批量保存联系人。
一.新增了一个命名空间:Microsoft.Phone.UserData;在这个命名空间里新增了多个用于联系人的类,其中通过Contacts类可以异步获取联系人列表。
Contacts _contact = new Contacts();
_contact.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(_contact_SearchCompleted);
_contact.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1");//在这里可以输入参数,过滤搜索结果
void _contact_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
this.listBox1.ItemsSource = e.Results.ToList();
}
获取联系人的图片方法:
BitmapImage bi = new BitmapImage();
bi.SetSource(e.Results.First().GetPicture());

二.新增了Save Contact Task,这个task用来保存新的联系人,但是这个task中并没有给出直接选择照片或图片的方法,而是要在Task运行后,在Task中选择图片。
SaveContactTask _task = new SaveContactTask();
_task.FirstName = "Randy";
_task.LastName = "Lee";
_task.Nickname = "xiaogem";
_task.MobilePhone = "1234567890";
_task.Completed += new EventHandler<SaveContactResult>(_task_Completed);//通过这个事件来判断是否保存成功。
_task.Show();

这是一个非常有趣的画刷,可以产生视频的蒙板效果,这个画刷在Silverlight中早就有的,但是Windows Phone中却一直没有引入,不过在WP7.1 SDK正式版中这个特性被加入进来了,手机上也可以制做这种效果了。
一.原理

这里需要用到MediaElement控件来做为Video 的载体,也就是说由这个控件来播放Video,然后将这个控件做为VideoBrush的源来使用,而VideBrush又以型状控件、容器控件或文字控件的Foreground、Background、Path形式加入到这些控件中,从而利用这些控件的形状或内容做为蒙板产生笔刷效果。
注意:在模拟器上无法看到效果,只有用真机才可以。
二.实现
1.产生文字蒙板效果
<MediaElement x:Name="meVideo" IsHitTestVisible="False" Source="Wildlife.wmv" AutoPlay="True"/>
<TextBlock Text="Video" FontSize="150" FontWeight="Bold">
<TextBlock.Foreground>
<VideoBrush SourceName="meVideo"/>
</TextBlock.Foreground>
</TextBlock>
2. 形状蒙板效果
<Ellipse Width="200" Height="200" VerticalAlignment="Top">
<Ellipse.Fill>
<VideoBrush SourceName="meVideo"/>
</Ellipse.Fill>
</Ellipse>
3. 容器蒙板效果
<StackPanel Width="200" Height="200">
<StackPanel.Background>
<VideoBrush SourceName="meVideo"/>
</StackPanel.Background>
</StackPanel>
4. 按钮控件效果
<Button Width="300" Height="150" Content="Video">
<Button.Background>
<VideoBrush SourceName="meVideo"/>
</Button.Background>
</Button>
5. 按钮控件文字蒙板效果
<Button Width="300" Height="150">
<Button.Content>
<TextBlock Text="Video" FontSize="100" FontWeight="Bold">
<TextBlock.Foreground>
<VideoBrush SourceName="meVideo"/>
</TextBlock.Foreground>
</TextBlock>
</Button.Content>
</Button>
由以上效果可以看出,这个笔刷和其他的笔刷使用起来基本上一样,可以用于多种控件上,也可以产生多种蒙板效果。
从8月22起Windows Phone marketplace可以提交7.1 sdk开发的应用了,尽管提交页面和方式与7.0是同一个,但是还是会出现一些问题。并且在提交之前也注意一些问题。
1. 7.0 应用转为7.1应用
我之前有一些应用都是在7.0下开发的,但是因为要用到7.1的一些新特性,所以就需要把应用转成7.1然后再继续开发。
转换方法:
1) 打开工程属性页面,将目标版本改为7.1
2) 在工程上单击右键,选择“Upgrade to Windows Phone 7.1”菜单
另外还需要注意的是:如果转为7.1后,一般就无法改回7.0了。
一般如果开发应用时是直接在7.1下开发的,应该没有什么问题,但是许多人的应用开发中或开发完成了,要转成7.1再发布的话,在发布到Marketplace上时就会出现[NeutralResourceLanaguge]这样一个错误。
这是因为在转换时,IDE工具并没有把AssemblyInfo做修改,所以需要手工自已完成。
点击Assembly Information按钮,在Neutral Lanaguage中选择语言。
注意:在这里也有中文,但目前还不能选,否则上传时,会报网络错误。
2. 测试
在7.1 sdk中的Visual studio 2010中包含了一个测试工具,用来对上传Marketplace的应用进行测试。
首先注意要在Release模式下才可以进行测试。在单击工程的右键菜单中出现“Open Marketplace Test Kit”菜单项。打开工具,可以看到各个测试项目:
通过这个工具,可以对应用进行一些基本的测试,其中包括Capability的测试,这样就不用再像7.0那样,用命令方式来测试了。
3. 截图
对于截图,在7.0时是一件很麻烦的事,要通过工具来截,并且还要用图像工具进行修改后才可以上传。现在就不用了,7.1的模拟器集成了截图功能,这样就可以很方便的进行截图了,而且截取的图就可以直接用于上传了。
以上这些都完成了,上传应用就变的很容易了并且成功率也会提高了。不再会因为Capability等问题被退回了。
