<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_OMG! 日记</title><subtitle type="text">我们来自中科大-微软联合培养实验班，这里是我们软件工程课程设计的团队技术博客</subtitle><id>http://feed.cnblogs.com/blog/u/93836/rss</id><updated>2011-12-14T13:29:30Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/93836/rss"/><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/26/2264704.html</id><title type="text">三月磨一剑---也来晒晒我们的开发产品  欢迎拍砖</title><summary type="text">紧张的三个月学习软件开发接近尾声，目前已进入测试阶段，在当PM这段日子里，脑子一根筋的想着进度，实现，设计，但是其实忘记了真正的一条，用户体验和用户需求的再分析，现在我就把我们的软件的设计和重要的features贴出来，供大家参考并同时恳请大家给出具体的意见。1. 我们做的是什么？我们其实做一个手机终端应用软件，此软件名字叫 conference helper(会议助手)。想帮助那些经常参加学术会议更好的管理conference agenda, 快速选择需要参加的session 或者talk, 并实现闹钟提醒功能。同时我们也会给那些去陌生的城市参加会议的人带来快捷的信息，里面提供了 GPS定位</summary><published>2011-11-26T15:02:00Z</published><updated>2011-11-26T15:02:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/26/2264704.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/26/2264704.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;紧张的三个月学习软件开发接近尾声，目前已进入测试阶段，在当PM这段日子里，脑子一根筋的想着进度，实现，设计，但是其实忘记了真正的一条，用户体验和用户需求的再分析，现在我就把我们的软件的设计和重要的features贴出来，供大家参考并同时恳请大家给出具体的意见。&lt;/p&gt;&lt;p&gt;1. 我们做的是什么？&lt;/p&gt;&lt;p&gt;我们其实做一个手机终端应用软件，此软件名字叫 conference helper(会议助手)。&lt;/p&gt;&lt;p&gt;想帮助那些经常参加学术会议更好的管理conference agenda, 快速选择需要参加的session 或者talk, 并实现闹钟提醒功能。同时我们也会给那些去陌生的城市参加会议的人带来快捷的信息，里面提供了 GPS定位，以及会议的地点，宾馆的地点，宾馆的电话等信息，让用户在陌生城市不在感到&amp;ldquo;孤身一人&amp;rdquo;。&lt;/p&gt;&lt;p&gt;2. 我们的用户？&lt;/p&gt;&lt;p&gt;从软件名字可以看出，该手机客户端实现的服务人群非常明确：researchers, professors 等经常参加学术会议的用户。&lt;/p&gt;&lt;p&gt;3. 我们的平台和运行环境？&lt;/p&gt;&lt;p&gt;我们产品开发依托于微软亚洲研究院的 &lt;a href="http://academic.research.microsoft.com/"&gt;Academic search&lt;/a&gt;的数据支持, 运行在windows phone 7.1 以上系统环境中。&lt;/p&gt;&lt;p&gt;4. 我们的用户需求分析和需求定位&lt;/p&gt;&lt;p&gt;在产品开发前期，我们针对经常参加国际会议的researchers 做了一个调查，根据他们的反馈，确实存在一种情况，用户在参加会议的时候经常带个小册子，或者主办方会给参会人员发很多会议相关的信息，带着不是很方便，浏览起来也没有很强的针对性，但是手机却一直带着，所以我们应该说用户的pain还是有的，那么他们最理想的参会状况是什么的呢？&lt;/p&gt;&lt;p&gt;一．必须保证他们能够快速浏览会议的agenda,并且能够快速定位自己感兴趣的session或者talk，这个是最核心的。&lt;/p&gt;&lt;p&gt;二．用户可以添加自己的喜爱的session作为备忘，并且能够在会议前提醒用户参加会议&lt;/p&gt;&lt;p&gt;三．如果手机中能够加入一些会场信息，一些宾馆信息，一些地图之类的也会很方便&lt;/p&gt;&lt;p&gt;5. 我们产品的实现----重拳出击&lt;/p&gt;&lt;p&gt;分析了用户的需求，我们进行了产品的具体实现,如果你是用户，那么你可以&lt;/p&gt;&lt;p&gt;一．可以在搜索框里搜索会议、作者和发表的论文&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255063085.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255196092.jpg" alt="clip_image002" width="316" height="523" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如果用户搜索一个会议，那么会进入搜索结果界面，此时，用户会得到相关的搜索会议结果，以及相关的论文、作者。 如果点击相应的会议，那么我会进入会议详细介绍界面，此时&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255244136.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255293640.png" alt="clip_image004" width="314" height="522" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;里面用户可以看到会议的相关信息，以及是否有会议的agenda，和call for papers的相关信息。 如果用户点击agenda会进入一个agenda页面，这个是用户进入agenda页面的一个入口。 另一个用户想要进入会议的agenda的入口是在主界面里面有个upcoming page,此page 记录两项内容，用户可以看到call for paper的内容和最近举办会议并有日程表的会议列表。此时，如果用户进行点击，那么我们会进入agenda页面&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255311523.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image006" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255419288.jpg" alt="clip_image006" width="335" height="545" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;二．当用户选择了以上介绍的两种入口后，我们可以进入相应的agenda页面，此时我们的agenda页面用户可以很快的浏览会议日程&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255461857.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image008" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/20111126225551282.jpg" alt="clip_image008" width="790" height="368" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;由图可以看出，用户可以很快看出会议有多少天，并进行快速浏览每天的session， talk, 如果用户喜欢的话，可以进行add 到favorites， 并且我们还可以进行闹钟提醒。 用户也可以进行作者的快速查询，里面的作者列表根据字母分类，可以快速浏览。&lt;/p&gt;&lt;p&gt;当然为了更快的方便用户查询，我们又根据时间和作者的首字母对session和作者的名字可以进行更快速定位&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255547444.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image010" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262255581649.jpg" alt="clip_image010" width="275" height="455" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256013893.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image012" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256239564.jpg" alt="clip_image012" width="277" height="459" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;如图，我们如果点击里面的session的时间，或者点击字母，会调出时间列表或者作者首字母列表，这时可以选择需要的，然后变定位到特定的位置。&lt;/p&gt;&lt;p&gt;三．会议的session里面我们有add 按钮，用户可以添加该session到一个favorite list （这个也是panorama item）每次add 过之后，我们同时也会添加到remind功能，进行闹钟提示，当然用户可以通过下面的remind 设置，来设置是否提醒， 提前多少分钟提醒等功能&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256261709.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image014" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/20111126225631134.jpg" alt="clip_image014" width="286" height="465" border="0" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256325018.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image016" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256334886.jpg" alt="clip_image016" width="294" height="461" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;如图，就是相应的remind settings。 我们可以设置是否在add 时候进行提醒，如果提醒，提醒多上时间等功能。&lt;/p&gt;&lt;p&gt;四．除此之外，我们 我们提供了一个静态页面 other information，里面放置了主办方的一些信息，如Hotel的电话，地点，名称等， 会场的布局，会场的地点等。&lt;/p&gt;&lt;p&gt;五．我们提供了快速的搜索功能，用户可以进行keyword搜索，进而进行快速查找&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256351624.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image018" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256447352.jpg" alt="clip_image018" width="292" height="481" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256498808.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image020" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262256537823.jpg" alt="clip_image020" width="297" height="489" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;这个是我们的搜索界面&lt;/p&gt;&lt;p&gt;六．我们提供了GPS定位功能，同时在bing map地图上标注了会场地点，这样可以很方便的帮助用户，看自己的位置，为了方便用户的多种多样的需求，我们又加了一个搜索框，让用户自己搜索感兴趣的地点。&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257078845.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image022" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257194700.jpg" alt="clip_image022" width="295" height="496" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257254455.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image024" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257311842.jpg" alt="clip_image024" width="304" height="488" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;此图显示了会场地点，以及通过GPS定位自己的位置。&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257491040.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image026" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262257581511.jpg" alt="clip_image026" width="302" height="501" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;为了支持用户的多需求，可以搜索任意位置&lt;/p&gt;&lt;p&gt;七．多种多样的个性体验----用户可以选择自己喜爱的会议，作者，以及论文&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262258082647.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image028" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/20111126225809879.jpg" alt="clip_image028" width="321" height="524" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这里面有三个tile， 分别是favorite authors, favorite publications 和favorite conferences. 如果用户对某个作者，论文，会议感兴趣，那么便可以进行添加。&lt;/p&gt;&lt;p&gt;如图所示：&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262258159695.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image030" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262301476577.jpg" alt="clip_image030" width="263" height="430" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262301504885.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image032" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262301523574.jpg" alt="clip_image032" width="262" height="430" border="0" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262301548392.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image034" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262301557736.jpg" alt="clip_image034" width="261" height="426" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;此分别是作者，论文，以及会议添加到favorite. 当然我们的也建立的一个假设是如果用户点击进入agenda，并且add某些session,那么我们会直接进行加入到favorite conferences.&lt;/p&gt;&lt;p&gt;当然为了提高用户体验，我们会在用户第一次添加会议时，进行一个提示；&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262302018189.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border: 0px;" title="clip_image035" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111262302191814.png" alt="clip_image035" width="289" height="465" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;提示用户add产生相关的操作。&lt;/p&gt;&lt;p&gt;八．Notepad 功能，用户如果喜欢在开会的时候记些笔记，那么我们有很方便的Notepad 功能，来支持用户的需求，用户记录好之后，可以很方便的把这些东西发送到电子邮箱中。&lt;/p&gt;&lt;p&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" src="http://pic002.cnblogs.com/images/2011/319666/2011112714334651.png" alt="" width="269" height="478" /&gt;&lt;/p&gt;&lt;p align="center"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p align="center"&gt;里面的电子邮箱是用户自己设置的，如outlook，hotmail等，可以很方便的选择。&lt;/p&gt;&lt;p&gt;目前，我们主要功能用户也就知道了。看了这么多，不知道用户对我们的产品有何看法，欢迎讨论。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2264704.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/26/2264704.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/21/2257686.html</id><title type="text">OMG:daily scrum ten(three days included)</title><summary type="text">MemberThis three days’ workNoteRui 719:Implement add function.734:Change the color for updating765:Add email function to the notepad767:Favorite sessions or item displaying.Dongliang696: add bing map and helpful pictures host provide in the appNing666Add favorite conference and publication function7</summary><published>2011-11-21T13:42:00Z</published><updated>2011-11-21T13:42:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/21/2257686.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/21/2257686.html"/><content type="html">&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Member&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;This three days&amp;rsquo; work&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Rui &lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;719:&lt;/p&gt;&lt;p&gt;Implement add function.&lt;/p&gt;&lt;p&gt;734:&lt;/p&gt;&lt;p&gt;Change the color for updating&lt;/p&gt;&lt;p&gt;765:&lt;/p&gt;&lt;p&gt;Add email function to the notepad&lt;/p&gt;&lt;p&gt;767:&lt;/p&gt;&lt;p&gt;Favorite sessions or item displaying.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Dongliang&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;696: add bing map and helpful pictures host provide in the app&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ning&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;666&lt;/p&gt;&lt;p&gt;Add favorite conference and publication function&lt;/p&gt;&lt;p&gt;723:&lt;/p&gt;&lt;p&gt;Create ui design displaying agenda per day.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ting&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;707:support keyword query not only session title but also talk title.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Kaifei&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Finished&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Haifeng&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;751:&lt;/p&gt;&lt;p&gt;Change the color to adjust the windows 7.1&lt;/p&gt;&lt;p&gt;722: author list button _click&lt;/p&gt;&lt;p&gt;766: debug the error in the conference panorama&lt;/p&gt;&lt;p&gt;777: display duplicate session in one day.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Down&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141029385.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141162883.jpg" alt="clip_image002" width="601" height="335" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assignment of work:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141401977.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141462254.png" alt="clip_image003" width="596" height="265" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Rate&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141483037.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111212141535083.png" alt="clip_image004" width="613" height="398" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;周四其实我们基本完成了code complete,但是周五和cherry 讨论之后，她对我们的UI设计提出新的修改意见，所以我们现在要重改ui，然后手机升级后各种bug, 各种问题，因此我们又奋战了三天+三个人的星期一，完成了所有功能，现在开始了正规的test,由于这些突然的计划，导致我并没有把具体的daily scrum放上面。 整合了三天的，其实还有些task 没有放上去，只是把主要的task放上去了。&lt;/p&gt;&lt;p&gt;希望我们能够实现一个质的飞跃！！&lt;/p&gt;&lt;p&gt;Omg 加油！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2257686.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/21/2257686.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253609.html</id><title type="text">Windows Phone中Map控件由浅及深</title><summary type="text">鄙人所在的OMG团队在高级软件工程课程团队项目，负责Microsoft的Academic Search在手机WP7.1上客户端的开发。现已进入十天的beta版本开发阶段。这两天用到了Map控件，我想结合自己dev的经历，对Map控件稍作介绍。 〖PS：我们是来自中国科大各个专业（数学、EE、CS）的大四学生，六个人，欢迎各位看官来我们的团队技术博客指点一二：http://www.cnblogs....</summary><published>2011-11-18T02:22:00Z</published><updated>2011-11-18T02:22:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253609.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253609.html"/><content type="html">&lt;p&gt;鄙人所在的OMG团队在高级软件工程课程团队项目，负责Microsoft的Academic Search在手机WP7.1上客户端的开发。现已进入十天的beta版本开发阶段。这两天用到了Map控件，我想结合自己dev的经历，对Map控件稍作介绍。&lt;/p&gt;  &lt;p&gt;〖PS：我们是来自中国科大各个专业（数学、EE、CS）的大四学生，六个人，欢迎各位看官来我们的团队技术博客指点一二：&lt;a href="http://www.cnblogs.com/OMG-Team/"&gt;http://www.cnblogs.com/OMG-Team/&lt;/a&gt;〗&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Map控件，是基于Microsoft的Bing map的地图控件，在WP7能很好的使用bing map实现地图的呈现，缩放，标注和定位等功能。&lt;/p&gt;  &lt;p&gt;首先，介绍一下Map控件的简单应用吧。&lt;/p&gt;  &lt;p&gt;在使用Map控件之前，我们必须先注册地图获得一个Register Key才能够使用bing map，注册地址：&lt;a href="https://www.bingmapsportal.com"&gt;https://www.bingmapsportal.com&lt;/a&gt; 。新建一个Sliverlight for Windows Phone的工程，就可以开始练习使用Map控件了。在xaml里添加一个地图控件&lt;/p&gt;  &lt;p&gt;在.cs文件里添加register key的代码（或者不使用Binding直接写在xaml中也行）&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid &lt;/span&gt;&lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ContentPanel&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12,0,12,0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &lt;br /&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;my:Map &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;623&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;                    CredentialsProvider&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{Binding CredentialsProvider}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;                    Margin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;12,-22,0,0&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;map1&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;br /&gt;                    VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;425&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;note：应该添加一个namespace：&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &lt;span style="color: #008080"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Phone.Controls.Maps; &lt;br /&gt;&lt;span style="color: #008080"&gt; 2&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080"&gt; 3&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; MapExample &lt;br /&gt;&lt;span style="color: #008080"&gt; 4&lt;/span&gt; { &lt;br /&gt;&lt;span style="color: #008080"&gt; 5&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MainPage : PhoneApplicationPage &lt;br /&gt;&lt;span style="color: #008080"&gt; 6&lt;/span&gt;      { &lt;br /&gt;&lt;span style="color: #008080"&gt; 7&lt;/span&gt;           &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; String BingMapsId = &lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Al7xKT8k0tvRNSCTc0uQs6AM1k-gREOdyigcbbbL4z932ynL42ySQuht1Ur6hpLI&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #008080"&gt; 8&lt;/span&gt;           &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; CredentialsProvider credentialsProvider = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ApplicationIdCredentialsProvider(BingMapsId); &lt;br /&gt;&lt;span style="color: #008080"&gt; 9&lt;/span&gt;           &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; CredentialsProvider CredentialsProvider &lt;br /&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;           { &lt;br /&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;                &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; credentialsProvider; } &lt;br /&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;           } &lt;br /&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt;           &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; Constructor &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt;           &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; MainPage() &lt;br /&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt;           { &lt;br /&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt;               InitializeComponent(); &lt;br /&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt;            } &lt;br /&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt;       } &lt;br /&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt; }  &lt;/div&gt;  &lt;p&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这样就可以运行一个最基本的map控件了。&lt;/p&gt;&lt;p&gt;下面，我们看看如何设置map的中心点以及Zoomlevel以及显示模式。&lt;/p&gt;&lt;p&gt;这个很简单只需要改变Center、 Zoomlevel和Map.Mode这几个属性的值，同样可以在xaml直接设置，或者在.cs文件里设置，当然，更高级点的用法就是对Center，zoomlevel等进行Binding了。&lt;/p&gt;&lt;p&gt;Map控件还有很多其他的属性，比如ZoomBarVisibility，ScaleVisibility，LogoVisibility等，这些都可以简单的进行设置或者通过Binding技术实现动态的属性值的改变。   &lt;br /&gt;然而，Map控件还提供添加标注，添加图片，绘制多边形，多边线等功能。&lt;/p&gt;&lt;p&gt;下面讲讲如何添加一个标记吧。&lt;/p&gt;&lt;p&gt;首先，我们可以在MainPage()里建立并初始化一个标记（ 记得添加namespace： using System.Device.Location; )&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &lt;span style="color: #008080"&gt;1&lt;/span&gt; Pushpin pin = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pushpin(); &lt;br /&gt;&lt;span style="color: #008080"&gt;2&lt;/span&gt; pin.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GeoCoordinate(&lt;span style="color: #800080"&gt;30&lt;/span&gt;, &lt;span style="color: #800080"&gt;120&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #008080"&gt;3&lt;/span&gt; pin.Background = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Black); &lt;br /&gt;&lt;span style="color: #008080"&gt;4&lt;/span&gt; pin.Content = &lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Example&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #008080"&gt;5&lt;/span&gt; pin.Height = &lt;span style="color: #800080"&gt;40&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #008080"&gt;6&lt;/span&gt; pin.Width = &lt;span style="color: #800080"&gt;80&lt;/span&gt;; &lt;br /&gt;&lt;span style="color: #008080"&gt;7&lt;/span&gt; map1.Children.Add(pin);   &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;  一定要记得添加到map1这个控件中哦~ &lt;/span&gt;  &lt;/div&gt;  &lt;p&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;对于多边线,我们用到的是Polyline这样一个类，多边形的绘制使用Polygon这个类，插入图片使用MapLayer类，它们的使用跟Pushpin这个类异曲同工。&lt;/p&gt;&lt;p&gt;以上就是一些简单的应用，那么来点实际点的。&lt;/p&gt;&lt;p&gt;我在开发过程中需要使用Map控件实现动态定位，找到自己的所在位置以及某个会议要举行的位置，并在切换过程中在地图中标注出相应的位置，并支持WP7.1的多点触控进行Zoomin和Zoomout。&lt;/p&gt;&lt;p&gt;这需要写一个page，我把它叫做MapPage，然后它的入口接收在页面Navigate时候传过来的三个值，一个是会议举行地点的经度，一个是纬度，还有一个是label，显示在标注上的文字。下面给出源代码仅供参考。&lt;/p&gt;&lt;p&gt;创建一个MapPage，xaml文件如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;phone:PhoneApplicationPage &lt;/span&gt;&lt;span style="color: #ff0000"&gt;x:Class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Client.MapPage&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:x&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:phone&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:shell&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:mc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;    &lt;br /&gt;    xmlns:System&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:System;assembly=mscorlib&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    FontFamily&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{StaticResource PhoneFontFamilyNormal}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    FontSize&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{StaticResource PhoneFontSizeNormal}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    Foreground&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{StaticResource MyPhoneForegroundBrush}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    SupportedOrientations&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Portrait&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Orientation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Portrait&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    mc:Ignorable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;d&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; d:DesignWidth&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;480&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; d:DesignHeight&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;728&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    shell:SystemTray.IsVisible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;False&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    xmlns:my&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Canvas &lt;/span&gt;&lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt; Map View &lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Border &lt;/span&gt;&lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Mapw&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;768&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;480&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;my:Map &lt;/span&gt;&lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Map&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;br /&gt;                    CredentialsProvider&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{Binding CredentialsProvider}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                    CopyrightVisibility&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Collapsed&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                    LogoVisibility&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Collapsed&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                    ZoomLevel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{Binding Zoom, Mode=TwoWay}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                    Center&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color: #808000"&gt;{Binding Center, Mode=TwoWay}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;my:Map.Mode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;my:RoadMode &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;my:Map.Mode&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;my:MapItemsControl &lt;/span&gt;&lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;mapControl&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;my:Map&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Add map control &lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Border&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Canvas&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;phone:PhoneApplicationPage.ApplicationBar&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;shell:ApplicationBar &lt;/span&gt;&lt;span style="color: #ff0000"&gt;IsVisible&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; IsMenuEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;False&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;shell:ApplicationBarIconButton &lt;/span&gt;&lt;span style="color: #ff0000"&gt;IconUri&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/Images/appbar.location.rest.png&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;current&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Click&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CurrentLocation_Click&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;shell:ApplicationBarIconButton &lt;/span&gt;&lt;span style="color: #ff0000"&gt;IconUri&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/Images/appbar.next.rest.png&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;venue&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; Click&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;VenueLocation_Click&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;shell:ApplicationBar&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;phone:PhoneApplicationPage.ApplicationBar&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;phone:PhoneApplicationPage&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;在MapPage.cs文件里完成相应的处理：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;  &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Net;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Controls;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Documents;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Input;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Media;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Media.Animation;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Shapes;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Phone.Controls;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Phone.Controls.Maps;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Device.Location;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ComponentModel;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Phone.Controls.Maps.Core;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Client&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MapPage : PhoneApplicationPage, INotifyPropertyChanged&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; MapPage()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RoutedEventHandler(MapPage_Loaded);&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            InitializeDefaults();&lt;br /&gt;&lt;br /&gt;            DataContext = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt; CredentialsProvider credentialsProvider = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ApplicationIdCredentialsProvider(AcademicSearch.App.BingMapsId);          &lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; CredentialsProvider CredentialsProvider&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; credentialsProvider; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; MapLayer pushpinLayer;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; pushpinLabel;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Pushpin locationMark;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; MapPage_Loaded(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            NotifyPropertyChanged(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Zoom&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;            NotifyPropertyChanged(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Center&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;            pushpinLayer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MapLayer();&lt;br /&gt;            Map.Children.Add(pushpinLayer);&lt;br /&gt;            pushpinLayer.AddChild(&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pushpin() {Content =&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Border() { Child = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TextBlock() { Text = pushpinLabel },                              Background=&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Black)}},&lt;br /&gt;                Center);&lt;br /&gt;                locationMark = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pushpin() { Content = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Border() { Child = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TextBlock() { Text = &lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;You Are Here!&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt; },                               Background = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Black) } };&lt;br /&gt;            pushpinLayer.AddChild(locationMark, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GeoCoordinate(&lt;span style="color: #800080"&gt;0&lt;/span&gt;, &lt;span style="color: #800080"&gt;0&lt;/span&gt;));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnNavigatedTo(e);&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; longitudeStr;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; latitudeStr;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (NavigationContext.QueryString.TryGetValue(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;longitude&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; longitudeStr) &amp;amp;&amp;amp; NavigationContext.QueryString.TryGetValue(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;latitude&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; latitudeStr))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; latitude; &lt;br /&gt;                &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; longitude;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Double.TryParse(latitudeStr, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; latitude) &amp;amp;&amp;amp; Double.TryParse(longitudeStr, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; longitude))&lt;br /&gt;                {&lt;br /&gt;                    Center = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GeoCoordinate(latitude, longitude);&lt;br /&gt;                    Venue = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GeoCoordinate(latitude, longitude);&lt;br /&gt;                    Zoom = DefaultZoomLevel;&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; label;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (NavigationContext.QueryString.TryGetValue(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;label&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; label))&lt;br /&gt;                {&lt;br /&gt;                    pushpinLabel = label;&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    pushpinLabel = &lt;span style="color: #800000"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddPushpin(GeoCoordinate location)&lt;br /&gt;        {&lt;br /&gt;            Pushpin pushpin = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Pushpin();&lt;br /&gt;            pushpin.Content = &lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Test&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            pushpinLayer.AddChild(pushpin, location);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt; Gets or sets the map zoom level.&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; DefaultZoomLevel = &lt;span style="color: #800080"&gt;17.0&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; MaxZoomLevel = &lt;span style="color: #800080"&gt;21.0&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; MinZoomLevel = &lt;span style="color: #800080"&gt;1.0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; _zoom = DefaultZoomLevel;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; Zoom&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _zoom; }&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; coercedZoom = Math.Max(MinZoomLevel, Math.Min(MaxZoomLevel, value));&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_zoom != coercedZoom)&lt;br /&gt;                {&lt;br /&gt;                    _zoom = value;&lt;br /&gt;                    NotifyPropertyChanged(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Zoom&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; GeoCoordinateWatcher loc = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CurrentLocation_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Zoom += 1;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (loc == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                loc = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; GeoCoordinateWatcher(GeoPositionAccuracy.Default);&lt;br /&gt;                loc.StatusChanged += loc_StatusChanged;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (loc.Status == GeoPositionStatus.Disabled)&lt;br /&gt;            {&lt;br /&gt;                loc.StatusChanged -= loc_StatusChanged;&lt;br /&gt;                MessageBox.Show(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Location services must be enabled on your phone.&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            loc.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; loc_StatusChanged(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, GeoPositionStatusChangedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e.Status == GeoPositionStatus.Ready)&lt;br /&gt;            {&lt;br /&gt;                locationMark.Location = loc.Position.Location;&lt;br /&gt;                Map.SetView(loc.Position.Location, &lt;span style="color: #800080"&gt;17.0&lt;/span&gt;);&lt;br /&gt;                loc.Stop();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; VenueLocation_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            Map.SetView(Venue, &lt;span style="color: #800080"&gt;17.0&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; GeoCoordinate _center;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; GeoCoordinate Center&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; _center; }&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (_center != value)&lt;br /&gt;                {&lt;br /&gt;                    _center = value;&lt;br /&gt;                    NotifyPropertyChanged(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Center&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; GeoCoordinate Venue;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; NotifyPropertyChanged(String propertyName)&lt;br /&gt;        {&lt;br /&gt;            PropertyChangedEventHandler handler = PropertyChanged;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; != handler)&lt;br /&gt;            {&lt;br /&gt;                handler(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PropertyChangedEventArgs(propertyName));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; HasDirections&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Return true only if has directions.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;#region&lt;/span&gt; Tasks&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; InitializeDefaults()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Initialize default properties.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ChangeMapMode()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Change map view mode.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; IncreaseZoomLevel()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Increases zoom level.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DecreaseZoomLevel()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Decreases zoom level.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CenterLocation()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Center current location.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CenterPushpinsPopup(Point touchPoint)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Center pushpins popup to the touch point.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateNewPushpin(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; selectedItem, Point point)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Create a new pushpin.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateRoute()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; TODO : Calculate a route.&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        }        &lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;MSRA-USTC Class&lt;/p&gt;&lt;p&gt;OMG team&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2253609.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253609.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253385.html</id><title type="text">OMG: daily scrum nine</title><summary type="text">MemberToday’s taskTomorrow’s taskNoteRui 719 continuedAnd do the conference setting.Update to Windows Phone 7.1BugRevisalDongliang696:Add the bing map and helpful pictures host provide in the App bartest start:TestNingtest 700:Improved the UI designBugRevisalTingContinuedAndTest startTestKaifeiFinis</summary><published>2011-11-17T16:23:00Z</published><updated>2011-11-17T16:23:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253385.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253385.html"/><content type="html">&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Member&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Today&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;&lt;strong&gt;Tomorrow&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Rui &lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;719 continued&lt;/p&gt;&lt;p&gt;And do the conference setting.&lt;/p&gt;&lt;p&gt;Update to Windows Phone 7.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Bug&lt;/p&gt;&lt;p&gt;Revisal&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Dongliang&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;696:&lt;/p&gt;&lt;p&gt;Add the bing map and helpful pictures host provide in the App bar&lt;/p&gt;&lt;p&gt;test start:&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Test&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ning&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;test 700:&lt;/p&gt;&lt;p&gt;Improved the UI design&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Bug&lt;/p&gt;&lt;p&gt;Revisal&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ting&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Continued&lt;/p&gt;&lt;p&gt;And&lt;/p&gt;&lt;p&gt;Test start&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Test&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Kaifei&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Finished&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Finished&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Haifeng&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Update 7.1 and improve the APP&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Discuss UI and some improvement with cherry, and motivate team members.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Down&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180022478521.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180022529911.jpg" alt="clip_image002" width="797" height="374" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assignment of work:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180022533924.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180023018148.png" alt="clip_image003" width="814" height="409" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Rate&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180023025540.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111180023108062.png" alt="clip_image004" width="812" height="651" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天遇到以下问题：&lt;/p&gt;&lt;p&gt;1. 大家的积极性不是很强了，而且自己的积极性也不强了，估计是自己前几天比较累，现在比较疲倦的缘故吧， 现在要调整自己的状态，好好改善团队的精神面貌&lt;/p&gt;&lt;p&gt;2. 张宁同学发了一篇博客，发者无心，可能内容太有针对色彩，来自辩论队，所以很容易理解，然后yu tao 估计感觉有点被攻击，被针对，所以就引发了一场&amp;ldquo;邮件大战&amp;rdquo;，其实这件事很小，也很无所谓。可能我太push队员了，给其他组造成压力。也可能由于我的PM带领下，我们组干得累，干得多，然后博客分又拿到第一，给其他队造成压力。我只想说，其实，我是个追求完美的PM，追求完美，是一个很难被满足的PM，我也不想和其他组比分，因为分数没有可比性，怎么调动大家的积极性，怎么从上次博客第三，alpha版本第四的消极状态进入战斗模式，怎样motivate大家，我只能选择一个比较现实的目标，最容易实现的就是博客，所以我一直在加力，确实给我们组的承诺我实现了，我们组的凝聚力也提高了，这就是我完成的目的。可能其他组感觉到压力，其实真正做好APP才是王道，那种一起努力， 一起奋斗的团队，让我可以忘却疲惫，忘却寂寞。&lt;/p&gt;&lt;p&gt;3. 上面的问题说小，其实真的好小，小的我感觉可笑，但是怎么解决呢，首先我反思加上别人的提醒，如果下一次出现这种事情，不要太邮件群里讨论，或者BCC下其他不需要的人，邮件的定位是传递消息，但是也有可能误导消息，所以不要指望邮件能解决问题。 时间是治疗任何伤口的良药，我感觉等两天后，缓过来，再和他们沟通沟通。&lt;/p&gt;&lt;p&gt;4. 我原本指望，能够鸡血一把，但发现其实自己的实力还是很有限，包括知识面，包括管理能力，协调能力，张宁是一个很有思想的年轻人，yu tao也是， 通过他们的博客，其实我们要学习他们的优点。有时间好好分析他们的博客，然后借用他们的思想，甚至付诸行动，进行整合，研究生，来点创业吧。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2253385.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/18/2253385.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/17/2253361.html</id><title type="text">OMG: daily scrum eight</title><summary type="text">MemberToday’s taskTomorrow’s taskNoteRui 719:Implement the add function719 continuedAnd do the conference setting.Update to Windows Phone 7.1Dongliang696:Add the bing map and helpful pictures host provide in the App bar696:Add the bing map and helpful pictures host provide in the App bartest start:N</summary><published>2011-11-17T15:58:00Z</published><updated>2011-11-17T15:58:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/17/2253361.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/17/2253361.html"/><content type="html">&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Member&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Today&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;&lt;strong&gt;Tomorrow&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Rui &lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;719:&lt;/p&gt;&lt;p&gt;Implement the add function&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;719 continued&lt;/p&gt;&lt;p&gt;And do the conference setting.&lt;/p&gt;&lt;p&gt;Update to Windows Phone 7.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Dongliang&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;696:&lt;/p&gt;&lt;p&gt;Add the bing map and helpful pictures host provide in the App bar&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;696:&lt;/p&gt;&lt;p&gt;Add the bing map and helpful pictures host provide in the App bar&lt;/p&gt;&lt;p&gt;test start:&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ning&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;653:&lt;/p&gt;&lt;p&gt;Conference results futher processing&lt;/p&gt;&lt;p&gt;572:&lt;/p&gt;&lt;p&gt;when we touch author list in the Item detailed page, it will jump to author button list, when you touch the button, it will jump to the author search page.&lt;/p&gt;&lt;p&gt;571:&lt;/p&gt;&lt;p&gt;when we touch the talk button or listbox it will jump to the Item detailed page.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;700:&lt;/p&gt;&lt;p&gt;Improved the UI design&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ting&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;697:&lt;/p&gt;&lt;p&gt;search by query words, then dispaly related sessions in the list&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Continued&lt;/p&gt;&lt;p&gt;And&lt;/p&gt;&lt;p&gt;Test start&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Kaifei&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Finished&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Finished&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Haifeng&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;Merge kaifei&amp;rsquo;s code&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Update 7.1 and improve the APP&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Down&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111172357132224.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/20111117235717715.jpg" alt="clip_image002" width="543" height="256" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assignment of work:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111172357199089.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111172357247481.png" alt="clip_image003" width="547" height="276" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Rate&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111172357324081.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111172357358767.png" alt="clip_image004" width="549" height="440" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;明天期待着你们的改善，升级。OMG 加油&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2253361.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/17/2253361.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251405.html</id><title type="text">OMG: daily scrum Seven</title><summary type="text">MemberToday’s taskTomorrow’s taskNoteRui 656:Add button can enter reminding list and favorite670:Conference settingDongliang623:Bing map display and map picture displaycontinueImproveNing647:Session Pivot page display658:Talk Item display.Ting689:Support keyword query.700:Improve it supporting talk </summary><published>2011-11-16T08:29:00Z</published><updated>2011-11-16T08:29:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251405.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251405.html"/><content type="html">&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Member&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Today&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;&lt;strong&gt;Tomorrow&amp;rsquo;s task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Rui &lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;656:&lt;/p&gt;&lt;p&gt;Add button can enter reminding list and favorite&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;670:&lt;/p&gt;&lt;p&gt;Conference setting&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Dongliang&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;623:&lt;/p&gt;&lt;p&gt;Bing map display and map picture display&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;continue&lt;/p&gt;&lt;p&gt;Improve&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ning&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;647:&lt;/p&gt;&lt;p&gt;Session Pivot page display&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;658:&lt;/p&gt;&lt;p&gt;Talk Item display.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Ting&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;689:&lt;/p&gt;&lt;p&gt;Support keyword query.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;700:&lt;/p&gt;&lt;p&gt;Improve it supporting talk query.&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Kaifei&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;590:&lt;/p&gt;&lt;p&gt;Improve screensaver&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;660:&lt;/p&gt;&lt;p&gt;Merge code&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;&lt;strong&gt;Haifeng&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="185"&gt;&lt;p&gt;654:&lt;/p&gt;&lt;p&gt;Touch the author in the author list, it enter the AuthorDetailPage&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="240"&gt;&lt;p&gt;Merge kaifei&amp;rsquo;s 代码&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Down&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628117973.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628148756.jpg" alt="clip_image002" width="617" height="313" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assignment of work:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628197049.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628279255.png" alt="clip_image003" width="626" height="323" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Task Burn Rate&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628297105.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111161628352856.png" alt="clip_image004" width="616" height="433" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本打算今天做完，但是发现还是有一些细枝末节没有搞定， 现在还差两大项，一项是talkItempage的显示，另一项是conference setting, 无论如何明天不能再拖了，因为后面有UI design环节，现在看到团队的斗志还是很高，很高兴，所谓的鸡血PM，感到了自我存在感。呵呵，OMG，加油！！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2251405.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251405.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251229.html</id><title type="text">【WP7】一个便捷而且比较炫的分组聚类控件：LongListSelector控件的使用</title><summary type="text">在微软发布的Silverlight Toolkit中，有一个LongListSelector控件，可以作为长列表的显示控件。除去基本的列表功能以外，LongListSelector空间还可以处理分组的列表项，每一组有一个头部，可以显示这个分组的信息。效果如图所示：其中蓝色的部分是分组的头部。此外，LongListSelector还有只显示分组头部，点击自动定位的功能。如图所示：看到了如此高级的使用，下面我们就具体来看看如何实现这个控件的功能吧！为了使用Toolbox中的控件，首先我们需要在XAML文件中添加如下的名字空间定义：xmlns:toolkit="clr-namespace:</summary><published>2011-11-16T06:44:00Z</published><updated>2011-11-16T06:44:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251229.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251229.html"/><content type="html">&lt;p&gt;在微软发布的&lt;a href="http://silverlight.codeplex.com/"&gt;Silverlight Toolkit&lt;/a&gt;中，有一个LongListSelector控件，可以作为长列表的显示控件。除去基本的列表功能以外，LongListSelector空间还可以处理分组的列表项，每一组有一个头部，可以显示这个分组的信息。&lt;/p&gt;&lt;p&gt;效果如图所示：&lt;/p&gt;&lt;p&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" src="http://pic002.cnblogs.com/images/2011/319666/2011111614380236.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;其中蓝色的部分是分组的头部。&lt;/p&gt;&lt;p&gt;此外，LongListSelector还有只显示分组头部，点击自动定位的功能。如图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" src="http://pic002.cnblogs.com/images/2011/319666/2011111614383597.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;看到了如此高级的使用，下面我们就具体来看看如何实现这个控件的功能吧！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;为了使用Toolbox中的控件，首先我们需要在XAML文件中添加如下的名字空间定义：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;并在工程的引用中添加Microsoft.Phone.Controls.Toolkit。做好之后，就可以在页面上新建一个LongListSelector的实例了，像使用其它控件一样，添加如下代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;toolkit:LongListSelector  &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LongList"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;toolkit:LongListSelector&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这样添加的结果仅仅是添加了一个空的控件。为了显示列表内容，我们需要修改LongListSelector控件的如下属性：&lt;/p&gt;&lt;p&gt;1. ItemsSource属性：指向列表内容的源。ItemsSource属性必须继承了IEnumerable接口的类的实例；&lt;/p&gt;&lt;p&gt;2. ItemTemplate属性：指定列表表项的模板，用以显示列表的每一个项；&lt;/p&gt;&lt;p&gt;3. GroupHeaderTemplate属性：指定分组头部的模板，可用以显示分组信息，如分组的名称等等；&lt;/p&gt;&lt;p&gt;4. GroupFooterTemplate属性：指定分组尾部的模板，可用以显示各个分组的额外信息，如&amp;ldquo;显示更多&amp;rdquo;；&lt;/p&gt;&lt;p&gt;5. ListHeaderTemplate属性：指定整个控件头部的模板；&lt;/p&gt;&lt;p&gt;6. ListFooterTemplate属性：指定整个控件尾部的模板；&lt;/p&gt;&lt;p&gt;7. GroupItemsPanel属性：指定显示分组名称模式下，放置分组名的容器的模板，常设置为WrapPanel控件；&lt;/p&gt;&lt;p&gt;8. GroupItemTemplate属性：指定显示分组名称模式下，放置分组项的模板，可以显示分组名称等信息。&lt;/p&gt;&lt;p&gt;9. IsFlatList属性：布尔型属性，取值为True时，表示列表不需要分组，ItemsSource中的每一项代表一个表项，是一个Item的DataContext；取值为False时，ItemsSource中的每一项代表一个分组，是GroupHeaderTemplate和GroupFooterTemplate的DataContext，而ItemsSource中每一项的GetEnumerator的返回值是ItemTemplate所要显示的内容的迭代器。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下面以我小组项目中的使用来说明LongListSelector控件的用法。&lt;/p&gt;&lt;p&gt;首先，为了封装一个分组，定义了一个Group类，这个类可以作为配合LongListSelector使用的通用类：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Group&amp;lt;S, T&amp;gt; : IEnumerable&amp;lt;T&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; Group(S groupItem, IEnumerable&amp;lt;T&amp;gt; items)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.GroupItem = groupItem;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Items = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;T&amp;gt;(items);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; Equals(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; obj)&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         Group&amp;lt;S, T&amp;gt; other = obj &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; Group&amp;lt;S, T&amp;gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; (other != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (GroupItem.Equals(other.GroupItem));&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; GetHashCode()&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; GroupItem.GetHashCode();&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; S GroupItem { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; IList&amp;lt;T&amp;gt; Items { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; IEnumerator&amp;lt;T&amp;gt; GetEnumerator()&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; Items.GetEnumerator();&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;     System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; Items.GetEnumerator();&lt;br /&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;需要显示LongListSelector的时候，可以使用Linq查询，得到一个经过分组的ItemsSource：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; sessions = &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; session &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; agendaviewmodel.Items&lt;br /&gt;               group session by session.StartTime into s&lt;br /&gt;               &lt;span style="color: #0000ff;"&gt;orderby&lt;/span&gt; s.Key&lt;br /&gt;               &lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Group&amp;lt;DateTime, SessionViewModel&amp;gt;(s.Key, s);&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这个语句执行的结果，就是把agendaviewmodel.Items中所有的项目session，按照session.StartTime分组放入s，在把所有的s按照s.Key排序的结果依次放入Group类中，所得到的集成了IEnumerable的结果存储在sessions里。在我们的SessionViewModel中，有一个属性叫Title，于是在ItemTemplate中，便可以用如下的Binding将 Title显示出来：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="&lt;/span&gt;&lt;span style="color: #808000;"&gt;{Binding Title}&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;GroupHeaderTemplate中要显示的东西，则可以直接绑定到Group类里的GroupItem属性：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="&lt;/span&gt;&lt;span style="color: #808000;"&gt;{Binding GroupItem}&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;这里的Group类并不是必须的，不过为了层次化的封装可以如此抽象出其功能。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;关于LongListSelector的更多细节，可以参考：WP7 LongListSelector in depth&lt;/p&gt;&lt;p&gt;Part1: Visual structure and API &lt;a href="http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth--part1-visual-structure-and-api"&gt;http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth--part1-visual-structure-and-api&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Part2: Data binding scenarios &lt;a href="http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth--part2-data-binding-scenarios"&gt;http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth--part2-data-binding-scenarios&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2251229.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/16/2251229.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/15/2249406.html</id><title type="text">如何调用windows phone 7.1的后台闹钟功能 step by step</title><summary type="text">自从 WP7.1之后，windows phone 开放一些后台调用，包括音乐，闹钟，播放器等，相信在做windows phone开发时，有可能会调用后台， 恰好我们的软件工程中需要用到闹钟提醒功能，现在就把具体的细节一步一步告诉大家。包括实现多项提醒，存储和显示等功能。1. 简介Reminder是我们Microsoft Academic Search (MAS) 的Windows Phone 7的一个应用的模块，用来提醒用户会议中每个session的开始。用户可以设置reminder的开始时间，结束时间，reminder的消息以及铃声，同时用户也可以删除已经存在的reminder。我需要做的就</summary><published>2011-11-15T02:33:00Z</published><updated>2011-11-15T02:33:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/15/2249406.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/15/2249406.html"/><content type="html">&lt;p&gt;自从 WP7.1之后，windows phone 开放一些后台调用，包括音乐，闹钟，播放器等，相信在做windows phone开发时，有可能会调用后台， 恰好我们的软件工程中需要用到闹钟提醒功能，现在就把具体的细节一步一步告诉大家。&lt;/p&gt;&lt;p&gt;包括实现多项提醒，存储和显示等功能。&lt;/p&gt;&lt;p&gt;1. 简介&lt;/p&gt;&lt;p&gt;Reminder是我们Microsoft Academic Search (MAS) 的Windows Phone 7的一个应用的模块，用来提醒用户会议中每个session的开始。用户可以设置reminder的开始时间，结束时间，reminder的消息以及铃声，同时用户也可以删除已经存在的reminder。我需要做的就是提供创建和删除reminder的API，已经管理现有的reminders。下面我就谈一谈我在实现过程中的方法，遇到的困难，教训以及解决方案。&lt;/p&gt;&lt;p&gt;2. 如何在Memory中存储ReminderList&lt;/p&gt;&lt;p&gt;程序运行时，需要在内存中存储临时的ReminderList的信息。下面我谈谈这个部分我的经验与总结。&lt;/p&gt;&lt;p&gt;2.1. 数据结构&lt;/p&gt;&lt;p&gt;选择何时的数据结构是非常重要的。我一开始打算使用C#的Dictionary和Tuple，结果发现Windows Phone并不支持Tuple，于是我自己定义了一个class Tuple5并且把它用作Dictionary的Value的Type。Class Tuple5的代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Tuple5&amp;lt;T1, T2, T3, T4, T5&amp;gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; T1 Item1 { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; T2 Item2 { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; T3 Item3 { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; T4 Item4 { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; T5 Item5 { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; Tuple5(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         Item1 = item1;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         Item2 = item2;&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;         Item3 = item3;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;         Item4 = item4;&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;         Item5 = item5;&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;存储ReminderList的Dictionary的type如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt;, Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt;&amp;gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;其中uint是我给每个Reminder分配的一个Universally Unique Identifier (UUID)，Tuple5里面五个参数分别为Reminder的开始时间，结束时间，消息，重复响铃频率和声音文件的地址。这样我就可以用这个Dictionary来存储我们的ReminderList了。&lt;/p&gt;&lt;p&gt;2.2. 使用Windows Phone的Alarm&lt;/p&gt;&lt;p&gt;为了让我们的Reminder能在设定的时间响铃，我们使用了Windows Phone SDK 7.1的新功能&amp;mdash;&amp;mdash;Alarm。我首先参考了MSDN官方的代码示例，地址如下：&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202965(v=vs.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh202965(v=vs.92).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;然后自己开始编写代码。下面我主要讲一下如何设置一个Alarm。&lt;/p&gt;&lt;p&gt;首先我们需要使用Windows Phone的scheduler的namespace，代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.Phone.Scheduler;&lt;/div&gt;&lt;p&gt;然后就是使用传进来的开始时间beginTime，结束时间stopTime，消息message，重复响铃频率recurrence和声音文件的地址sound来创建一个Alram对象并且加入Scheduler，代码如下:&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; Alarm alarm = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Alarm(name);&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; alarm.Content = message;&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; alarm.Sound = sound;&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; alarm.BeginTime = beginTime;&lt;br /&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; alarm.ExpirationTime = stopTime;&lt;br /&gt;&lt;span style="color: #008080;"&gt;6&lt;/span&gt; alarm.RecurrenceType = recurrence;&lt;br /&gt;&lt;span style="color: #008080;"&gt;7&lt;/span&gt; ScheduledActionService.Add(alarm);&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3. 如何在文件系统中存储ReminderList&lt;/p&gt;&lt;p&gt;因为用户设置的Alarm在下次启动程序的时候还要求能够删除和修改，所以必须要将现有的Alarms存在文件系统里。下面我讲一下我的经验。&lt;/p&gt;&lt;p&gt;3.1. Serialization的失败&lt;/p&gt;&lt;p&gt;我一开始尝试使用C#的XmlSerializer和DataContractSerializer来存储我的Dictionary，但是我经过一天的尝试，最终以失败结束。下面我就XmlSerializer谈谈我的实现方法。&lt;/p&gt;&lt;p&gt;我一开始尝试使用XmlSerializer来将我的Dictionary存成xml文件，然后下次直接从xml文件读取这个Dictionary。代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; XmlSerializer ser = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;(Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt;, Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt;&amp;gt;));&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; write&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; stream = File.Create(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ReminderList.xml&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;))&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     ser.Serialize(stream, ReminderList); &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; your instance&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; read&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; stream = File.OpenRead(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ReminderList.xml&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;))&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;     ReminderList = (Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt;, Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt;&amp;gt;)ser.Deserialize(stream);&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&lt;br /&gt;最后编译时提示我Uri不能被Serialized。于是我将Uri改成string，他还是提示我Tuple5的Serialization出错，于是我仔细研究这个，尝试了几种方法，包括在我的class Tuple5的定义加上[Serializable()]的属性，最后还是没有成功，于是我开始考虑自己将Dictionary转化成文件。&lt;/p&gt;&lt;p&gt;3.2. 自己将Dictionary转化成文件&lt;/p&gt;&lt;p&gt;因为使用Serialization失败，我开始自己将Dictionary存入文件，我使用了最简单的方法，就是将每个item一行行以string形式存入文件，代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Obtain the virtual store for the application.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; IsolatedStorageFile myStore = IO.GetUserStore();&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; myStore.CreateDirectory(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Reminder&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Specify the file path and options.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; isoFileStream = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; IsolatedStorageFileStream(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Reminder\\ReminderList.dat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, FileMode.OpenOrCreate, myStore))&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Write the data&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; isoFileWriter = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StreamWriter(isoFileStream))&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt;, Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt;&amp;gt; kvp &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; ReminderList)&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             isoFileWriter.WriteLine(Convert.ToString(kvp.Key));&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             isoFileWriter.WriteLine(kvp.Value.Item1.ToString());&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;             isoFileWriter.WriteLine(kvp.Value.Item2.ToString());&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;             isoFileWriter.WriteLine(kvp.Value.Item3);&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;             isoFileWriter.WriteLine(kvp.Value.Item4.ToString());&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (kvp.Value.Item5 != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;                 isoFileWriter.WriteLine(kvp.Value.Item5.AbsoluteUri);&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;                 isoFileWriter.WriteLine(&lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;有一点要说明的是，Windows Phone使用的是独立的存储文件IsolatedStorageFile，与PC上并不一样。&lt;/p&gt;&lt;p&gt;3.3. 从文件中读取ReminderList&lt;/p&gt;&lt;p&gt;每次启动时，都要能够从文件中读取ReminderList。我是写了一个静态构造函数来从文件读取ReminderList。静态构造函数有一个对象被声明就会调用，且整个程序只调用一次，从文件读取ReminderList的代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Obtain a virtual store for the application.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Specify the file path and options.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; isoFileStream = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; IsolatedStorageFileStream(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Reminder\\ReminderList.dat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, FileMode.Open, myStore))&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Read the data.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; isoFileReader = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StreamReader(isoFileStream))&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; line = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; ((line = isoFileReader.ReadLine()) != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;uint&lt;/span&gt; newId = Convert.ToUInt32(line);&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;                 line = isoFileReader.ReadLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;                 DateTime startTime = DateTime.Parse(line);&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;                 line = isoFileReader.ReadLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;                 DateTime stopTime = DateTime.Parse(line);&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;                 line = isoFileReader.ReadLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; message = line;&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;                 line = isoFileReader.ReadLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;                 RecurrenceInterval recurrence = RecurrenceInterval.None;&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (line)&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;                 {&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;None&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.None; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Daily&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.Daily; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;EndOfMonth&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.EndOfMonth; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Monthly&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.Monthly; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Weekly&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.Weekly; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Yearly&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;: recurrence = RecurrenceInterval.Yearly; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;default&lt;/span&gt;: recurrence = RecurrenceInterval.None; &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;                 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;                 line = isoFileReader.ReadLine();&lt;br /&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;                 Uri sound = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (line != &lt;span style="color: #800000;"&gt;""&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;38&lt;/span&gt;                 {&lt;br /&gt;&lt;span style="color: #008080;"&gt;39&lt;/span&gt;                     sound = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(line, UriKind.Relative);&lt;br /&gt;&lt;span style="color: #008080;"&gt;40&lt;/span&gt;                 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;41&lt;/span&gt;                 Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt; newReminder = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Tuple5&amp;lt;DateTime, DateTime, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, RecurrenceInterval, Uri&amp;gt;(startTime, stopTime, message, recurrence, sound);&lt;br /&gt;&lt;span style="color: #008080;"&gt;42&lt;/span&gt;                 ReminderList.Add(newId, newReminder);&lt;br /&gt;&lt;span style="color: #008080;"&gt;43&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;44&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;45&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;46&lt;/span&gt; }&lt;br /&gt;&lt;span style="color: #008080;"&gt;47&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;48&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;49&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; TODO:&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;50&lt;/span&gt; }&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4. 其他细节&lt;/p&gt;&lt;p&gt;虽然实现了Reminder的模块，我还是考虑了很多需要完善的细节，下面举出两个例子。&lt;/p&gt;&lt;p&gt;4.1. 重复的Reminder&lt;/p&gt;&lt;p&gt;用户在设置同一个session的reminder的时候，可能会修改设置，但是在我的程序里就会导致设置两个alarms，于是调用者对于同一个session必须先delete这个alarm（用之前create alarm返回的ID），然后才能创建新的。&lt;/p&gt;&lt;p&gt;4.2. 删去过期的Reminder&lt;/p&gt;&lt;p&gt;有些Alarms已经过了stopTime了，系统需要定期删掉这些Alarms。我是在每次创建新的alarm之前清理过期的alarms。&lt;/p&gt;&lt;p&gt;下面就是我花了将近三天时间研磨总结出来的，&lt;span style="color: #ff0000;"&gt;如果感觉对你有用，请推荐我们，相信这是对我们新手开发windows phone过程中的鼓励！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;欢迎批评指正！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2249406.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/15/2249406.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2249053.html</id><title type="text">OMG: daily scrum six</title><summary type="text">Member Today’s task Tomorrow’s task Note Rui Task:620...</summary><published>2011-11-14T15:25:00Z</published><updated>2011-11-14T15:25:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2249053.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2249053.html"/><content type="html">&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Member&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Today’s task&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;&lt;b&gt;Tomorrow’s task&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;         &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Rui &lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;Task:620 &lt;/p&gt;          &lt;p&gt;model view &amp;amp; binding&lt;/p&gt;          &lt;p&gt;637 &lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;637&lt;/p&gt;          &lt;p&gt;Agenda Data Binding &lt;/p&gt;          &lt;p&gt;639 Author List Binding&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Dongliang&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;500:&lt;/p&gt;          &lt;p&gt;upcoming conf. panoramaitem UI design&lt;/p&gt;          &lt;p&gt;506:&lt;/p&gt;          &lt;p&gt;Upcoming event panoramaitem click event handler&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;506&lt;/p&gt;          &lt;p&gt;Upcoming event panoramaitem click event handler&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Ning&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;504&lt;/p&gt;          &lt;p&gt;Design the conference detail page for each of the search result item&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;653:&lt;/p&gt;          &lt;p&gt;Conference results futher processing&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Ting&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;508:If the number of favorite conference is 0, then turn to the introduction page which shows how to add favorite conferences&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;509&lt;/p&gt;          &lt;p&gt;If there have favorite conferences, then turn on the listbox page showing the favorite conferences&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Kaifei&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;623&lt;/p&gt;          &lt;p&gt;Write methods to convert between reminder list and string array&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;641&lt;/p&gt;          &lt;p&gt;Display alarm on screensaver&lt;/p&gt;          &lt;p&gt;642&lt;/p&gt;          &lt;p&gt;Create UI of notepad&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="185"&gt;         &lt;p&gt;&lt;b&gt;Haifeng&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="185"&gt;         &lt;p&gt;571:&lt;/p&gt;          &lt;p&gt;when we touch the talk button or listbox it will jump to the Item detailed page.&lt;/p&gt;          &lt;p&gt;633:&lt;/p&gt;          &lt;p&gt;Navigate data passing and receive.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;p&gt;654:&lt;/p&gt;          &lt;p&gt;display and binding author in the authors page of the conference panorama&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="129"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Task Burn Down&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111142323543922.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/20111114232359329.jpg" width="673" height="366" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Assignment of work:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111142324046420.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111142324132365.png" width="683" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Task Burn Rate&lt;/strong&gt;&lt;strong&gt;：&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111142324158263.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://images.cnblogs.com/cnblogs_com/OMG-Team/201111/201111142324444145.png" width="693" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;我们周末队员事情比较多，又因为我们是双休日， 所以就没有让大家进行daily scrum和提交代码，因此这两天的burn down图是平的,但有些队员还是努力的在周末加班加点，很是感动。&lt;/p&gt;  &lt;p&gt;今天我们完成的速度是惊人的，框架搞定了不少。很是欢喜，明天估计就能把整体的框架搭好，呵呵，期待着。 早上的时候Ning同学由于UI设计的问题，产生点小分歧，在我们的协商之下，顺利结果，有问题不可怕，就怕问题不说。PM不能做assumption问题是正常的。&lt;/p&gt;  &lt;p&gt;应该各处想问题的好打算，坏打算，以及如何处理。加油OMG&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2249053.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2249053.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2248217.html</id><title type="text">test plan and test matrix for our beta version</title><summary type="text">Criterion for our test: If the tested module(s) can work correctly and complete user scenarios, and also it can deal with some unexpected casesappropriately. In addition, the app can response to userseffectively and fluently, we will let it pass.Test Resources: Platform: WP7.1 &amp; Visual Studio 20</summary><published>2011-11-14T04:53:00Z</published><updated>2011-11-14T04:53:00Z</updated><author><name>OMG! 日记</name><uri>http://www.cnblogs.com/OMG-Team/</uri></author><link rel="alternate" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2248217.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2248217.html"/><content type="html">&lt;p&gt;Criterion for our test:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If the tested module(s) can work correctly and complete user scenarios, and also it can deal with some unexpected cases&amp;nbsp;appropriately. In addition, the app can response to users&amp;nbsp;effectively and fluently, we will let it pass.&lt;/p&gt;&lt;p&gt;Test Resources:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Platform: WP7.1 &amp;amp; Visual Studio 2010 &amp;amp; windows phone emulator.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Testers: Dongliang &amp;amp; Ting Zhang&lt;/p&gt;&lt;p&gt;Test matrix:&lt;/p&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;User Type&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Mobile&amp;nbsp;&amp;nbsp;&amp;nbsp; OS&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Language&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Network&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Variable Count&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Conf. hosts&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;English&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;No network&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Conf. attenders&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;WP 7.1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;GPRS&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&amp;nbsp;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;WiFi&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;i)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Functional/Performance Test(效能测试): We will test the reliability and stability of each functional module.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;第一部分： we do our test strictly follow our written test cases, and test whether the function is work or not. Following is some examples of our test cases, to see more detail, please refer to our tfs.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;Test Case&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;Tested feature&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;Test&lt;/p&gt;&lt;p&gt;Data&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;Operation&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;Expected result&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;Actual result&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;Test Date&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;estimated time and tester&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;1&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;none&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;three tile on the favorite page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;2&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click favorite authors tile&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the favorite panorama&lt;/p&gt;&lt;p&gt;show all added to favorite &amp;nbsp; authors&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;3&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click favorite publications &amp;nbsp; tile&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the favorite panorama &amp;nbsp; publication item and show all added to favorite publications&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;4&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;no favorite&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click favorite conferences tile&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the introduction page &amp;nbsp; which show how to add conferences to favorite&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;5&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;have favorite&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click favorite conferences tile&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the conferences list &amp;nbsp; page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;6&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;on the favorite panorama&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click an author&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the author detail page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;7&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;on the author detail page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click the favorite button and &amp;nbsp; some other operations&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;you can add and remove authors, &amp;nbsp; as well as other common result&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;8&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;on the favorite panorama&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click a publication&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;jump to the publication detail &amp;nbsp; page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="51"&gt;&lt;p&gt;9&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="59"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="86"&gt;&lt;p&gt;on the publication detail page&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="118"&gt;&lt;p&gt;click the favorite button and &amp;nbsp; some other operations&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="127"&gt;&lt;p&gt;you can add and remove &amp;nbsp; publications, as well as other common result&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="58"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="48"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="84"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二部分：&amp;nbsp;Scenario/Integration Test（场景测试）: We will test whether modules which are related to each other can perform correctly.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We will assume several user scenarios and try to deal with the assumed needs of users.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,a researcher would want to find the conference agenda which he wants to attend.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,an attendee woul like to search the&amp;nbsp;agenda to find what he is interested in, and want to look further informations about it.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3,an attendee woul also like to be reminded when his interedted topic is about to start.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4,when a researcher is listenning to a topic at a conference, he wants to write down his thoughts and some confuses.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5,when a researcher is searching some authors, publications as well as conferences, he would want to add them as his favorite and want to look for them more conveniently.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第三部分：Negative Test: We will assume several unexpected situations to test whether our app can still&amp;nbsp; handle and work well.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,when the network is out of reach, our app can still work.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,when the battery is out, our app can store important informations and performe well when started next time.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3,when many users is using this to look for the same agenda, our app would still respond in a tolerable time.&lt;/p&gt;&lt;p&gt;ii)&amp;nbsp;&amp;nbsp;&amp;nbsp; Usability Test（易用性测试）: We will test whether our app can work efficiently and effectively.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; we maybe act as users to test whether our app can respond our queries fluently and the interface is easily and friendly.&lt;/p&gt;&lt;p&gt;iii)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Regression Test（回归测试）: last but not&amp;nbsp;the least.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;During our test, we&amp;nbsp;will do regression test everyday to make sure that some passed test cases are not influenced by our&amp;nbsp;bug fix. When all the bugs are fixed(maybe some are postponed to the next iteration), all team members would do this regression test, to guarantee that all the bugs are fixed and didn't recur before our release.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/OMG-Team/aggbug/2248217.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/OMG-Team/archive/2011/11/14/2248217.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
