<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/xiaoshatiantec" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/xiaoshatiantec" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 10 Feb 2012 12:16:37 GMT</lastBuildDate><title>『 听 风 且 吟 』技术版</title><description>倚楼听风雨,淡看江湖路......</description><image><url>http://www.feedsky.com/feed/xiaoshatiantec/sc/gif</url><title>『 听 风 且 吟 』技术版</title><link>http://coding.windstyle.cn</link></image><link>http://coding.windstyle.cn</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Fri, 10 Feb 2012 12:20:39 GMT</pubDate><item><title>CSS文字围绕效果</title><link>http://coding.windstyle.cn/2012/02/10/css-text-around-effect/</link><content:encoded>&lt;p&gt;前两天同事问我能不能用CSS实现这样一个效果，页面上有一段文本，但文本的左下方有一个图片，他希望文本在遇到图片时，能绕开图片。如果图片位于左上方的话，其实很容易做到，我同事遇到的这种情况我之前也没有处理过，研究了一下，发现了一种方法。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1133&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;先来看看最终效果，红色的方块用来模拟图片：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image3.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb3.png&quot; alt=&quot;image&quot; width=&quot;558&quot; height=&quot;109&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;完整的HTML如下：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
.left div
{
float: left;
clear: left;
margin-right:5px
}
.left .placeholder
{
margin-right:0px;
width:1px
}
.text
{
line-height: 20px
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div&amp;gt;
&amp;lt;div class=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;div class=&amp;quot;placeholder&amp;quot; style=&amp;quot;height: 60px&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div style=&amp;quot;width: 100px; height: 40px; background-color: red&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&amp;quot;text&amp;quot;&amp;gt;
Windows Phone是微软发布的一款手机操作系统，它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。2010年10月11日晚上9点30分，微软公司正式发布了智能手机操作系统Windows Phone，同时将谷歌的Android和苹果的IOS列为主要竞争对手。2011年2月，诺基亚与微软达成全球战略同盟并深度合作共同研发，建立庞大的生态系统。
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;简单解释一下，.left中的所有div都默认将float和clear都设置为left，这样做一方面能保证其他与这些div视觉上相邻的元素都会贴着它们，同时这些div自身又能保证独处一行。所以.text中的文本就会围绕.left中的所有div来呈现。&lt;/p&gt;
&lt;p&gt;.text设置了line-height为20px，这样做是为了给.left中的div带来计算高度上的便利。.left中的第一个div是一个占位符，它的作用是把红色方块向下推一段距离，所以它设置了height为60px，即.text行高的3倍，也就是三行文本（同理红色方块的高度是两行文本）。此外，它的width是1px，而不是0px，这是为了兼容IE7所做的让步。&lt;/p&gt;
&lt;p&gt;如果将这段代码拓展一下，我们还可以实现两边边框都扭曲的文本段，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image4.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb4.png&quot; alt=&quot;image&quot; width=&quot;413&quot; height=&quot;164&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;完整的HTML代码如下：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
.border
{
padding:0px;
margin:0px;
list-style:none
}
.border .left
{
float: left;
clear: left;
margin-right:5px;
height:20px;
background-color:Red
}
.border .right
{
float: right;
clear: right;
margin-left:5px;
height:20px;
background-color:Blue
}
.border .placeholder
{
margin-left:0px;
margin-right:0px;
width:1px
}
.text
{
line-height: 20px
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div&amp;gt;
&amp;lt;ul class=&amp;quot;border&amp;quot;&amp;gt;
&amp;lt;li class=&amp;quot;left placeholder&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 30px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left&amp;quot; style=&amp;quot;width: 10px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 20px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left&amp;quot; style=&amp;quot;width: 20px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 10px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left&amp;quot; style=&amp;quot;width: 30px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right placeholder&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left&amp;quot; style=&amp;quot;width: 20px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 10px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left&amp;quot; style=&amp;quot;width: 10px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 20px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;left placeholder&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li class=&amp;quot;right&amp;quot; style=&amp;quot;width: 30px&amp;quot;&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;div class=&amp;quot;text&amp;quot;&amp;gt;
Windows Phone是微软发布的一款手机操作系统，它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。2010年10月11日晚上9点30分，微软公司正式发布了智能手机操作系统Windows Phone，同时将谷歌的Android和苹果的IOS列为主要竞争对手。2011年2月，诺基亚与微软达成全球战略同盟并深度合作共同研发，建立庞大的生态系统。
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;以上代码均在IE7、IE8以及Chrome16中表现良好。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604553326/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/10/css-text-around-effect/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2012/02/10/css-text-around-effect/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>前两天同事问我能不能用CSS实现这样一个效果，页面上有一段文本，但文本的左下方有一个图片，他希望文本在遇到图片时，能绕开图片。如果图片位于左上方的话，其实很容易做到，我同事遇到的这种情况我之前也没有处理过，研究了一下，发现了一种方法。 先来看看最终效果，红色的方块用来模拟图片： 完整的HTML如下： 简单解释一下，.left中的所有div都默认将float和clear都设置为left，这样做一方面能保证其他与这些div视觉上相邻的元素都会贴着它们，同时这些div自身又能保证独处一行。所以.text中的文本就会围绕.left中的所有div来呈现。 .text设置了line-height为20px，这样做是为了给.left中的div带来计算高度上的便利。.left中的第一个div是一个占位符，它的作用是把红色方块向下推一段距离，所以它设置了height为60px，即.text行高的3倍，也就是三行文本（同理红色方块的高度是两行文本）。此外，它的width是1px，而不是0px，这是为了兼容IE7所做的让步。 如果将这段代码拓展一下，我们还可以实现两边边框都扭曲的文本段，如下图所示： 完整的HTML代码如下： 以上代码均在IE7、IE8以及Chrome16中表现良好。&lt;img src=&quot;http://www1.feedsky.com/t1/604553326/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/10/css-text-around-effect/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>效果</category><category>CSS</category><category>围绕</category><category>HTML</category><category>Web</category><pubDate>Fri, 10 Feb 2012 20:16:37 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2012/02/10/css-text-around-effect/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1133</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2012/02/10/css-text-around-effect/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604553326/1488721</fs:itemid></item><item><title>Windows Phone WebBrowser的技巧</title><link>http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/</link><content:encoded>&lt;p&gt;无论是在桌面级开发中，还是在手机端开发中，WebBrowser都是一个经常会用到的控件；Windows Phone中的WebBrowser虽然远远没有桌面版那么强大，但依然足够应付常规用途。本文就来介绍几则Windows Phone中的WebBrowser控件的小技巧。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1127&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;1.显示HTML片段&lt;/h3&gt;
&lt;p&gt;WebBrowser的NavigateToString方法可以用来将一段HTML片段显示在WebBrowser中。利用这个方法可以把WebBrowser当作一个增强版的RichTextBox来使用，京东商城的Windows Phone客户端在展示商品信息时就使用了这种技术。而且这种技术还有助于解决Windows Phone中TextBlock显示长文本的一个bug，具体表现为当文本过长时，TextBlock只显示文本的前半段内容，后半段内容不予显示，但却留出了位置（滚动条还能到达，非常诡异），而WebBrowser在显示长文本时就没有这种困扰。&lt;/p&gt;
&lt;p&gt;但NavigateToString并不是完美的，假若传入的字符串中包含中文（或其他UTF-8字符）的话，就会显示为乱码。&lt;/p&gt;
&lt;p&gt;解决这个问题的方法之一是提前对字符串进行转码，可以参考&lt;a href=&quot;http://blog.csdn.net/huangliangjie/article/details/7196464&quot; target=&quot;_blank&quot;&gt;这篇文章&lt;/a&gt;。但这样做的代价是需要遍历所有字符，其实只要把需要显示的HTML片段简单构造成HTML文件，存储到独立存储中，然后再用WebBrowser以常规的方式打开即可解决这个问题。如下面的代码所示：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;using (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())
 {
 if (!file.DirectoryExists(&amp;quot;temp&amp;quot;))
 file.CreateDirectory(&amp;quot;temp&amp;quot;);
 using (IsolatedStorageFileStream fs = new IsolatedStorageFileStream(&amp;quot;temp\\review.html&amp;quot;, FileMode.Create, file))
 {
 string html = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html lang='zh-CN'&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta http-equiv='Content-Type' content='text/html; charset=utf-8'&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;quot;;
 html += e.Review.Summary;
 html += &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;;
 byte[] bytes = Encoding.UTF8.GetBytes(html);
 fs.Write(bytes, 0, bytes.Length);
 }
 }
 this.wb.Navigate(new Uri(&amp;quot;temp\\review.html&amp;quot;, UriKind.Relative));&lt;/pre&gt;
&lt;h3&gt;2.禁止缩放&lt;/h3&gt;
&lt;p&gt;WebBrowser支持缩放，但有时我们并不需要缩放功能，譬如在用它来解决TextBlock的长文本bug时。&lt;/p&gt;
&lt;p&gt;如果需要禁用一切手势，可以将WebBrowser的IsHitTestVisible设置为False，但这样做的后果是WebBrowser滑动显示内容的功能都会失去。但如果仅仅想要禁用缩放功能，可以在WebBrowser将要显示的HTML的Head中加入这样下面的脚本：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0' /&amp;gt;&lt;/pre&gt;
&lt;p&gt;关于viewport的更多细节可以参考MSDN Blog的&lt;a href=&quot;http://blogs.msdn.com/b/iemobile/archive/2010/11/22/the-ie-mobile-viewport-on-windows-phone-7.aspx&quot; target=&quot;_blank&quot;&gt;这篇文章&lt;/a&gt;。值得注意的是原文在发表时，Windows Phone中的IE还不支持initial-scale、minimum-scale和maximum-scale，而在最新的Windows Phone Mango更新中，除了initial-scale之外的其余属性都已经可以很好的支持了。&lt;/p&gt;
&lt;h3&gt;3.接管横向滑动&lt;/h3&gt;
&lt;p&gt;如果用WebBrowser来解决TextBlock的bug，那么还有一个问题需要注意，WebBrowser会接管横向滑动手势，用来移动页面位置，也就是说，假如你把WebBrowser方知道Pivot或Panorama控件中时，就没有办法切换到其他Item了（除非从Header部分横向滑动）。&lt;/p&gt;
&lt;p&gt;不过一般在用WebBrowser代替TextBlock时，并需要它内置的横向滑动功能（通常会禁用缩放），所以我们可以想办法侦测发生在WebBrowser上的横向滑动手势，并用来修改Pivot或Panorama的SelectedIndex。所幸的是，Silverlight Toolkit For Windows Phone中有一个组件可以帮我们轻松的完成这项工作。&lt;/p&gt;
&lt;p&gt;首先在Xaml中添加GestureService.GestureListener：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;phone:WebBrowser Name=&amp;quot;wb&amp;quot; Loaded=&amp;quot;wb_Loaded&amp;quot; LoadCompleted=&amp;quot;wb_LoadCompleted&amp;quot;&amp;gt;
 &amp;lt;toolkit:GestureService.GestureListener&amp;gt;
 &amp;lt;toolkit:GestureListener Flick=&amp;quot;GestureListener_Flick&amp;quot; /&amp;gt;
 &amp;lt;/toolkit:GestureService.GestureListener&amp;gt;
 &amp;lt;/phone:WebBrowser&amp;gt;&lt;/pre&gt;
&lt;p&gt;在GestureService.GestureListener的Flick事件中修改Pivot或Panorama的SelectedIndex：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;private void GestureListener_Flick(object sender, FlickGestureEventArgs e)
 {
 if (e.Direction.ToString() == &amp;quot;Horizontal&amp;quot;)
 {
 this.p.SelectedIndex = 1;
 }

}&lt;/pre&gt;
&lt;p&gt;除了Flick之外，GestureService还支持Tap、Double Tap、Touch and Hold、Pan、以及Pinch and Stretch多种手势。关于GestureService的更多信息请参考&lt;a href=&quot;http://windowsphonegeek.com/articles/WP7-GestureService-in-depth--key-concepts-and-API&quot; target=&quot;_blank&quot;&gt;这篇文章&lt;/a&gt;。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604208999/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>无论是在桌面级开发中，还是在手机端开发中，WebBrowser都是一个经常会用到的控件；Windows Phone中的WebBrowser虽然远远没有桌面版那么强大，但依然足够应付常规用途。本文就来介绍几则Windows Phone中的WebBrowser控件的小技巧。 1.显示HTML片段 WebBrowser的NavigateToString方法可以用来将一段HTML片段显示在WebBrowser中。利用这个方法可以把WebBrowser当作一个增强版的RichTextBox来使用，京东商城的Windows Phone客户端在展示商品信息时就使用了这种技术。而且这种技术还有助于解决Windows Phone中TextBlock显示长文本的一个bug，具体表现为当文本过长时，TextBlock只显示文本的前半段内容，后半段内容不予显示，但却留出了位置（滚动条还能到达，非常诡异），而WebBrowser在显示长文本时就没有这种困扰。 但NavigateToString并不是完美的，假若传入的字符串中包含中文（或其他UTF-8字符）的话，就会显示为乱码。 解决这个问题的方法之一是提前对字符串进行转码，可以参考这篇文章。但这样做的代价是需要遍历所有字符，其实只要把需要显示的HTML片段简单构造成HTML文件，存储到独立存储中，然后再用WebBrowser以常规的方式打开即可解决这个问题。如下面的代码所示： 2.禁止缩放 WebBrowser支持缩放，但有时我们并不需要缩放功能，譬如在用它来解决TextBlock的长文本bug时。 如果需要禁用一切手势，可以将WebBrowser的IsHitTestVisible设置为False，但这样做的后果是WebBrowser滑动显示内容的功能都会失去。但如果仅仅想要禁用缩放功能，可以在WebBrowser将要显示的HTML的Head中加入这样下面的脚本： 关于viewport的更多细节可以参考MSDN Blog的这篇文章。值得注意的是原文在发表时，Windows Phone中的IE还不支持initial-scale、minimum-scale和maximum-scale，而在最新的Windows Phone Mango更新中，除了initial-scale之外的其余属性都已经可以很好的支持了。 3.接管横向滑动 如果用WebBrowser来解决TextBlock的bug，那么还有一个问题需要注意，WebBrowser会接管横向滑动手势，用来移动页面位置，也就是说，假如你把WebBrowser方知道Pivot或Panorama控件中时，就没有办法切换到其他Item了（除非从Header部分横向滑动）。 不过一般在用WebBrowser代替TextBlock时，并需要它内置的横向滑动功能（通常会禁用缩放），所以我们可以想办法侦测发生在WebBrowser上的横向滑动手势，并用来修改Pivot或Panorama的SelectedIndex。所幸的是，Silverlight Toolkit For Windows Phone中有一个组件可以帮我们轻松的完成这项工作。 首先在Xaml中添加GestureService.GestureListener： 在GestureService.GestureListener的Flick事件中修改Pivot或Panorama的SelectedIndex： 除了Flick之外，GestureService还支持Tap、Double Tap、Touch and Hold、Pan、以及Pinch and Stretch多种手势。关于GestureService的更多信息请参考这篇文章。&lt;img src=&quot;http://www1.feedsky.com/t1/604208999/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>手势</category><category>WebBrowser</category><category>乱码</category><category>HTML</category><category>bug</category><category>Windows Phone</category><pubDate>Thu, 09 Feb 2012 21:46:59 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1127</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2012/02/09/windows-phone-webbrowser-tips/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604208999/1488721</fs:itemid></item><item><title>隐藏SharePoint User Profile页面中的提示文本</title><link>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/</link><content:encoded>&lt;p&gt;在SharePoint 2010的User Profile页面中存在一些提示，本文的内容就是如何去掉这些提示而又不影响其他功能，这是一件简单而又意义不大的事情，但我却不小心想复杂了，前后花了几个小时，用jQuery写了几行代码，中间还发现bug修改了一遍，终于发现走了弯路，用区区3行CSS搞定。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1126&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;首先是“标签和注释”页面（thoughts.aspx）中的提示文本，位于标签云的下方，如图所示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb.png&quot; alt=&quot;image&quot; width=&quot;384&quot; height=&quot;365&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最下面几行提示文本的标签既没有id也没有class，还好标签云是有class的，可以用它来定位到之后的元素，并将其隐藏，只需一句Style：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}&lt;/pre&gt;
&lt;p&gt;其中~表示“之后的所有元素”，IE6不支持这个选择器，不过没关系，SharePoint 2010 不支持IE6。&lt;/p&gt;
&lt;p&gt;接着是“概述”页面（person.aspx）的记事板提示文本，这段提示文本是通过AJAX技术动态填充的，仅在没有Notes的情况下显示（包括将Notes全部删除之后）。&lt;/p&gt;
&lt;p&gt;没有Notes时的样子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image1.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb1.png&quot; alt=&quot;image&quot; width=&quot;553&quot; height=&quot;293&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有Notes时的样子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image2.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb2.png&quot; alt=&quot;image&quot; width=&quot;542&quot; height=&quot;230&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这段提示文本的标签也没有id和class，而且多层嵌套，可以依靠有class的分页元素（“上一步”和“下一步”的功能居然是为Notes翻页，我还以为是引导提示文本的向导按钮）来定位它。值得注意的是提示文本和Notes位于同一个div中，但结构却大相径庭，还好Notes的元素具有id，所以可以先将该层的所有div隐藏，然后再将具有id的div显示出来，籍此来隐藏提示文本，而又不影响Notes本身：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;.ms-socialCommentPaging + div &amp;gt; div {display:none}
.ms-socialCommentPaging + div &amp;gt; div[id] {display:block;}&lt;/pre&gt;
&lt;p&gt;其中+表示相邻的下一个元素，&amp;gt;表示第一级子元素，[id]表示包含id属性的元素。&lt;/p&gt;
&lt;p&gt;最终的CSS样式如下：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;style&amp;gt;
.ms-socialCommentPaging + div &amp;gt; div {display:none}
.ms-socialCommentPaging + div &amp;gt; div[id] {display:block;}
.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}
&amp;lt;/style&amp;gt;&lt;/pre&gt;
&lt;p&gt;将这段CSS添加到MySite Host的Custom Master Page中即可（默认为MySite.master）。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209000/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>在SharePoint 2010的User Profile页面中存在一些提示，本文的内容就是如何去掉这些提示而又不影响其他功能，这是一件简单而又意义不大的事情，但我却不小心想复杂了，前后花了几个小时，用jQuery写了几行代码，中间还发现bug修改了一遍，终于发现走了弯路，用区区3行CSS搞定。 首先是“标签和注释”页面（thoughts.aspx）中的提示文本，位于标签云的下方，如图所示： 最下面几行提示文本的标签既没有id也没有class，还好标签云是有class的，可以用它来定位到之后的元素，并将其隐藏，只需一句Style： 其中~表示“之后的所有元素”，IE6不支持这个选择器，不过没关系，SharePoint 2010 不支持IE6。 接着是“概述”页面（person.aspx）的记事板提示文本，这段提示文本是通过AJAX技术动态填充的，仅在没有Notes的情况下显示（包括将Notes全部删除之后）。 没有Notes时的样子： 有Notes时的样子： 这段提示文本的标签也没有id和class，而且多层嵌套，可以依靠有class的分页元素（“上一步”和“下一步”的功能居然是为Notes翻页，我还以为是引导提示文本的向导按钮）来定位它。值得注意的是提示文本和Notes位于同一个div中，但结构却大相径庭，还好Notes的元素具有id，所以可以先将该层的所有div隐藏，然后再将具有id的div显示出来，籍此来隐藏提示文本，而又不影响Notes本身： 其中+表示相邻的下一个元素，&amp;#62;表示第一级子元素，[id]表示包含id属性的元素。 最终的CSS样式如下： 将这段CSS添加到MySite Host的Custom Master Page中即可（默认为MySite.master）。&lt;img src=&quot;http://www1.feedsky.com/t1/604209000/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint</category><category>SharePoint 2010</category><category>提示</category><category>CSS</category><pubDate>Wed, 01 Feb 2012 22:42:52 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1126</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209000/1488721</fs:itemid></item><item><title>SharePoint HttpModule和SharePoint Designer的冲突</title><link>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/</link><content:encoded>&lt;p&gt;前段时间为SharePoint写了一个HttpModule来将对重定向对某些页面的请求,结果发现有一个副作用,会和SharePoint Designer有冲突.&lt;/p&gt;
&lt;p&gt;具体表现为启用了这个HttpModule之后,SharePoint Designer在打开aspx页面时会报以下错误:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;服务器不能完成您的请求.&lt;/p&gt;
&lt;p&gt;soap:Server服务器无法处理请求。 &amp;#8212;&amp;gt; 无法完成此操作。 请重试。 &amp;#8212;&amp;gt; 无法完成此操作。 请重试。&amp;lt;nativehr&amp;gt;0&amp;#215;80004005&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span id=&quot;more-1117&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;排除了HttpModule代码对该文件路径的影响之后,开始考虑是不是事件顺序的缘故.&lt;/p&gt;
&lt;p&gt;之前这个HttpModule是在PostAuthorizeRequest事件中处理重定向逻辑的,经过一番尝试,最后发现只要使用的事件早于PostRequestHandlerExecute,就会引发SharePoint Designer出错.&lt;/p&gt;
&lt;p&gt;具体原因未知.&lt;/p&gt;
&lt;p&gt;另附上HttpApplication中的事件触发顺序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BeginRequest&lt;/li&gt;
&lt;li&gt;AuthenticateRequest&lt;/li&gt;
&lt;li&gt;PostAuthenticateRequest&lt;/li&gt;
&lt;li&gt;AuthorizeRequest&lt;/li&gt;
&lt;li&gt;PostAuthorizeRequest&lt;/li&gt;
&lt;li&gt;ResolveRequestCache&lt;/li&gt;
&lt;li&gt;PostResolveRequestCache&lt;/li&gt;
&lt;li&gt;PostMapRequestHandler&lt;/li&gt;
&lt;li&gt;AcquireRequestState&lt;/li&gt;
&lt;li&gt;PostAcquireRequestState&lt;/li&gt;
&lt;li&gt;PreRequestHandlerExecute&lt;/li&gt;
&lt;li&gt;PostRequestHandlerExecute&lt;/li&gt;
&lt;li&gt;ReleaseRequestState&lt;/li&gt;
&lt;li&gt;PostReleaseRequestState&lt;/li&gt;
&lt;li&gt;UpdateRequestCache&lt;/li&gt;
&lt;li&gt;PostUpdateRequestCache&lt;/li&gt;
&lt;li&gt;EndReques&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;另：据说事件过于靠前还会使SharePoint无法上传文件。&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209001/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>前段时间为SharePoint写了一个HttpModule来将对重定向对某些页面的请求,结果发现有一个副作用,会和SharePoint Designer有冲突. 具体表现为启用了这个HttpModule之后,SharePoint Designer在打开aspx页面时会报以下错误: 服务器不能完成您的请求. soap:Server服务器无法处理请求。 &amp;#8212;&amp;#62; 无法完成此操作。 请重试。 &amp;#8212;&amp;#62; 无法完成此操作。 请重试。&amp;#60;nativehr&amp;#62;0&amp;#215;80004005&amp;#60;/nativehr&amp;#62;&amp;#60;nativestack&amp;#62;&amp;#60;/nativestack&amp;#62; 排除了HttpModule代码对该文件路径的影响之后,开始考虑是不是事件顺序的缘故. 之前这个HttpModule是在PostAuthorizeRequest事件中处理重定向逻辑的,经过一番尝试,最后发现只要使用的事件早于PostRequestHandlerExecute,就会引发SharePoint Designer出错. 具体原因未知. 另附上HttpApplication中的事件触发顺序： BeginRequest AuthenticateRequest PostAuthenticateRequest AuthorizeRequest PostAuthorizeRequest ResolveRequestCache PostResolveRequestCache PostMapRequestHandler AcquireRequestState PostAcquireRequestState PreRequestHandlerExecute PostRequestHandlerExecute ReleaseRequestState PostReleaseRequestState UpdateRequestCache PostUpdateRequestCache EndReques 另：据说事件过于靠前还会使SharePoint无法上传文件。&lt;img src=&quot;http://www1.feedsky.com/t1/604209001/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint Designer</category><category>SharePoint</category><category>错误</category><category>HttpModule</category><pubDate>Fri, 23 Dec 2011 19:00:18 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1117</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209001/1488721</fs:itemid></item><item><title>版本历史</title><link>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/</link><content:encoded>&lt;h3&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot;&gt;« Tagging Contacts 钛金联系人 for Windows Phone 7&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;v1.1.0.0 &lt;/strong&gt;2011-12-03 &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持查看拥有同一标签的所有联系人 &lt;/li&gt;
&lt;li&gt;+ 支持将联系人固定到“开始屏幕” &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.0.0.0 &lt;/strong&gt;2011-11-24 &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 自动显示“人脉”中的所有联系人 &lt;/li&gt;
&lt;li&gt;+ 查看联系人的详细信息 &lt;/li&gt;
&lt;li&gt;+ 管理联系人的标签&lt;/li&gt;
&lt;li&gt;+ 通过各种途径与联系人联络&lt;/li&gt;
&lt;li&gt;+ 可以向联系人的任何电话号码发送短信&lt;/li&gt;
&lt;li&gt;+ 查看所有标签&lt;/li&gt;
&lt;li&gt;+ 支持各种主题&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209002/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>« Tagging Contacts 钛金联系人 for Windows Phone 7 v1.1.0.0 2011-12-03 + 支持查看拥有同一标签的所有联系人 + 支持将联系人固定到“开始屏幕” v1.0.0.0 2011-11-24 + 自动显示“人脉”中的所有联系人 + 查看联系人的详细信息 + 管理联系人的标签 + 通过各种途径与联系人联络 + 可以向联系人的任何电话号码发送短信 + 查看所有标签 + 支持各种主题&lt;img src=&quot;http://www1.feedsky.com/t1/604209002/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 08 Dec 2011 10:34:24 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/changelog/</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209002/1488721</fs:itemid></item><item><title>Tagging Contacts 钛金联系人 for Windows Phone</title><link>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;&quot; alt=&quot;&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/banner.jpg&quot; width=&quot;560&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;钛金联系人是一个增强版的联系人应用。    &lt;br /&gt;您可以通过它来为您的联系人打标签，标签的内容没有任何限制，可以是他（她）最喜爱的食物、特长、昵称，也可以是你们认识的地方、你们的关系等等……     &lt;br /&gt;通过标签，您可以在瞬间回忆起他（她)的点点滴滴。     &lt;br /&gt;在未来的更新中，您还可以给拥有同一个标签的所有联系人群发短信和邮件，可以完全取代“人脉”的分组功能，而且没有联系人数量限制。&lt;/p&gt;
&lt;h3&gt;试用版功能&lt;/h3&gt;
&lt;p&gt;自动显示“人脉”中的所有联系人，并按照首字母分组。    &lt;br /&gt;查看联系人的详细信息。     &lt;br /&gt;为联系人添加和删除标签。     &lt;br /&gt;通过各种途径与联系人联络。     &lt;br /&gt;可以向联系人的任何电话号码发送短信。     &lt;br /&gt;查看所有标签。     &lt;br /&gt;浏览拥有同一个标签的所有联系人。     &lt;br /&gt;支持各种主题。&lt;/p&gt;
&lt;h3&gt;收费版功能&lt;/h3&gt;
&lt;p&gt;将联系人固定在开始屏幕&lt;/p&gt;
&lt;h3&gt;系统要求&lt;/h3&gt;
&lt;p&gt;Windows Phone 7.1（Mango）以及更新的系统&lt;/p&gt;
&lt;h3&gt;版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;当前版本：1.1.0.0 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot;&gt;版本历史»&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;截图&amp;amp;预览：&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_01.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;增强的联系人列表&quot; alt=&quot;增强的联系人列表&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_01_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_02.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;标签列表&quot; alt=&quot;标签列表&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_02_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_03.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;增强的联系人信息&quot; alt=&quot;增强的联系人信息&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_03_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_04.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;添加标签&quot; alt=&quot;添加标签&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_04_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_05.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;批量删除标签&quot; alt=&quot;批量删除标签&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_05_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_06.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;白色主题&quot; alt=&quot;白色主题&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_06_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;下载&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://windowsphone.com/s?appid=30df6cbe-c2e5-42e8-b678-e064b2746575&quot; target=&quot;_blank&quot;&gt;前往Windows Phone Marketplace下载安装&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209003/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>钛金联系人是一个增强版的联系人应用。 您可以通过它来为您的联系人打标签，标签的内容没有任何限制，可以是他（她）最喜爱的食物、特长、昵称，也可以是你们认识的地方、你们的关系等等…… 通过标签，您可以在瞬间回忆起他（她)的点点滴滴。 在未来的更新中，您还可以给拥有同一个标签的所有联系人群发短信和邮件，可以完全取代“人脉”的分组功能，而且没有联系人数量限制。 试用版功能 自动显示“人脉”中的所有联系人，并按照首字母分组。 查看联系人的详细信息。 为联系人添加和删除标签。 通过各种途径与联系人联络。 可以向联系人的任何电话号码发送短信。 查看所有标签。 浏览拥有同一个标签的所有联系人。 支持各种主题。 收费版功能 将联系人固定在开始屏幕 系统要求 Windows Phone 7.1（Mango）以及更新的系统 版本 当前版本：1.1.0.0 版本历史» 截图&amp;#38;预览： &amp;#160; &amp;#160; &amp;#160; 下载 前往Windows Phone Marketplace下载安装&lt;img src=&quot;http://www1.feedsky.com/t1/604209003/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 08 Dec 2011 10:28:30 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?page_id=1114</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209003/1488721</fs:itemid></item><item><title>使用SharePoint 2010内置的媒体播放器</title><link>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/</link><content:encoded>&lt;p&gt;SharePoint 2010 内置了一个基于Silverlight的媒体播放器，并且SharePoint 2010内置的一些WebPart会检测其输出内容中的链接，如果链接指向一个媒体文件，那么点击该链接之后就会在当前页面弹出这个播放器进行播放。那么如果我们自己开发了一些功能，要如何使用这个内置播放器呢？本文以一个同样基于Silverlight的幻灯片应用来举例说明，过程并不复杂，很容易应用到服务器端代码或JavaScript等其他开发方式中。&lt;span id=&quot;more-1100&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;首先我们需要在页面中引入mediaplayer.js，在Silverlight里可以这样写：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;if (!System.ComponentModel.DesignerProperties.IsInDesignTool &amp;amp;&amp;amp; HtmlPage.Document.GetElementById(&amp;quot;IDS_Script_MediaPlayer&amp;quot;) == null)
{
    HtmlElement script = HtmlPage.Document.CreateElement(&amp;quot;script&amp;quot;);
    script.SetAttribute(&amp;quot;id&amp;quot;, &amp;quot;IDS_Script_MediaPlayer&amp;quot;);
    script.SetAttribute(&amp;quot;type&amp;quot;, &amp;quot;text/javascript&amp;quot;);
    script.SetAttribute(&amp;quot;src&amp;quot;, &amp;quot;/_layouts/mediaplayer.js&amp;quot;);
    HtmlPage.Document.Body.AppendChild(script);
}&lt;/pre&gt;
&lt;p&gt;之后在适当的时候，提前创建一个播放器：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;ScriptObject mediaPlayer = HtmlPage.Window.Eval(&amp;quot;mediaPlayer&amp;quot;) as ScriptObject;
if (mediaPlayer != null)
{
    mediaPlayer.Invoke(&amp;quot;createOverlayPlayer&amp;quot;);
}&lt;/pre&gt;
&lt;p&gt;当用户点击了链接时，先判断链接的扩展名是不是被支持的媒体文件，然后根据情况决定弹出播放器或者直接打开链接：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;
Regex regex = new Regex(&amp;quot;\\.wmv|\\.wma|\\.mp3|\\.mp4&amp;quot;);
if (this.regex.IsMatch(url))
{
    ScriptObject mediaPlayer = HtmlPage.Window.Eval(&amp;quot;mediaPlayer&amp;quot;) as ScriptObject;
    if(mediaPlayer!=null)
    {
        ScriptObject overlayPlayer;
        try
        {
            overlayPlayer = mediaPlayer.Invoke(&amp;quot;getOverlayPlayer&amp;quot;) as ScriptObject;
            if(overlayPlayer==null)
                throw new Exception();
        }
        catch
        {
            mediaPlayer.Invoke(&amp;quot;createOverlayPlayer&amp;quot;);
            overlayPlayer = mediaPlayer.Invoke(&amp;quot;getOverlayPlayer&amp;quot;) as ScriptObject;
        }
        try
        {
            overlayPlayer.SetProperty(&amp;quot;MediaSource&amp;quot;, news.Url.ToString());
            overlayPlayer.SetProperty(&amp;quot;MediaTitle&amp;quot;, news.Title);
            overlayPlayer.SetProperty(&amp;quot;DisplayMode&amp;quot;, &amp;quot;Overlay&amp;quot;);
            overlayPlayer.Invoke(&amp;quot;Play&amp;quot;);
        }
        catch
        {
            HtmlPage.Window.Navigate(news.Url, &amp;quot;_blank&amp;quot;);
        }
    }
}
else
    HtmlPage.Window.Navigate(news.Url, &amp;quot;_blank&amp;quot;);
&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209004/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>SharePoint 2010 内置了一个基于Silverlight的媒体播放器，并且SharePoint 2010内置的一些WebPart会检测其输出内容中的链接，如果链接指向一个媒体文件，那么点击该链接之后就会在当前页面弹出这个播放器进行播放。那么如果我们自己开发了一些功能，要如何使用这个内置播放器呢？本文以一个同样基于Silverlight的幻灯片应用来举例说明，过程并不复杂，很容易应用到服务器端代码或JavaScript等其他开发方式中。 首先我们需要在页面中引入mediaplayer.js，在Silverlight里可以这样写： 之后在适当的时候，提前创建一个播放器： 当用户点击了链接时，先判断链接的扩展名是不是被支持的媒体文件，然后根据情况决定弹出播放器或者直接打开链接：&lt;img src=&quot;http://www1.feedsky.com/t1/604209004/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>mediaplayer.js</category><category>SharePoint</category><category>Silverlight</category><category>SharePoint 2010</category><category>Silverlight/WPF</category><category>播放器</category><pubDate>Fri, 04 Nov 2011 18:38:17 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1100</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209004/1488721</fs:itemid></item><item><title>用Silverlight调用SharePoint User Profile Web Service</title><link>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/</link><content:encoded>&lt;p&gt;调用SharePoint Web Service本来就不是一件令人愉悦的事情，如果期间在遇到一些诡异的问题的话……譬如我今天遇到的这件 ……&lt;/p&gt;
&lt;p&gt;按照惯例，添加好引用，编写代码调用GetUserProfileByNameAsync方法，稍等一下，一个异常抛出了（liao），大概反序列化某个属性时发生了错误。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1097&quot;&gt;&lt;/span&gt;而这个错误竟然是因为Visual Studio生成的Reference.cs文件和SharePoint提供的WSDL文件映射错误引起的，解决方法就是手工更改Reference.cs文件，该文件的路径是：项目文件夹\Service References\引用名称\Reference.cs。&lt;/p&gt;
&lt;p&gt;打开后定位到PropertyData类，我们需要给以下5个属性重新排序，顺序如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;IsPrivacyChanged&lt;/li&gt;
&lt;li&gt;IsValueChanged&lt;/li&gt;
&lt;li&gt;Values&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;重新排序的方法就是找到这几个属性，修改它们各自的System.Runtime.Serialization.DataMemberAttribute，修改或增加参数Order，如：&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;[System.Runtime.Serialization.DataMemberAttribute(IsRequired = true, Order = 1)]
 public bool IsPrivacyChanged { ... }&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;这一步完成之后，调用GetUserProfileByNameAsync方法不会再抛出异常了，但是拿到的结果中，所有的PropertyData.Values都为null，但其实SharePoint Server已经返回了结果，但这些结果并没有被正确的反序列化出来，好在我们还有办法直接去解析原始的XML结果。&lt;/div&gt;
&lt;div&gt;我们首先需要实现一个IEndpointBehavior和IClientMessageInspector：&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;public class UserProfilesBehavior : IEndpointBehavior
    {
        public UserProfilesInspector Inspector { get; private set; }

        public UserProfilesBehavior()
        {
            this.Inspector = new UserProfilesInspector();
        }

        public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
        { }

        public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
        {
            clientRuntime.MessageInspectors.Add(Inspector);
        }

        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
        { }

        public void Validate(ServiceEndpoint endpoint)
        { }

    }
    public class UserProfilesInspector : IClientMessageInspector
    {
        public string Account { get; private set; }

        XNamespace xmlns = &amp;quot;http://microsoft.com/webservices/SharePointPortalServer/UserProfileService&amp;quot;;

        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {
//像这样取出需要的内容
XDocument document = XDocument.Load(new System.IO.StringReader(reply.ToString()));
            this.Account = this.GetValue(document, &amp;quot;AccountName&amp;quot;).ToString();
        }

        private object GetValue(XDocument document, string propertyName)
        {
            var node = document.Descendants().FirstOrDefault((element) =&amp;gt; { return element.Name == xmlns + &amp;quot;PropertyData&amp;quot; &amp;amp;&amp;amp; element.Element(xmlns + &amp;quot;Name&amp;quot;).Value == propertyName; });
            if (node != null)
            {
                var valueNode = node.Descendants(xmlns + &amp;quot;Value&amp;quot;).FirstOrDefault();
                if (valueNode != null)
                {
                    return valueNode.Value.Replace(&amp;quot;_MThumb&amp;quot;,&amp;quot;_LThumb&amp;quot;);
                }
            }
            return string.Empty;
        }

        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
        {
            return null;
        }

    }&lt;/pre&gt;
&lt;p&gt;然后更改一下调用Web Service的代码，把刚才写的UserProfilesBehavior以Behavior和UserState的形式进去：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;UserProfilesBehavior behavior = new UserProfilesBehavior();
SPUserProfile.UserProfileServiceSoapClient userSoap = new SPUserProfile.UserProfileServiceSoapClient(binding, endpoint);
userSoap.Endpoint.Behaviors.Add(behavior);//添加为Behavior
userSoap.GetUserProfileByNameCompleted += new EventHandler&amp;lt;SPUserProfile.GetUserProfileByNameCompletedEventArgs&amp;gt;(userSoap_GetUserProfileByNameCompleted);
userSoap.GetUserProfileByNameAsync(people.Account, behavior);//添加为UserState&lt;/pre&gt;
&lt;p&gt;那么在GetUserProfileByNameAsync完成时的事件处理程序中，就可以通过UserState——也就是刚才编写的UserProfilesBehavior来拿到需要的数据了：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;void userSoap_GetUserProfileByNameCompleted(object sender, SPUserProfile.GetUserProfileByNameCompletedEventArgs e)
{
            if (e.Error == null)
            {
                UserProfilesBehavior behavior = (UserProfilesBehavior)e.UserState;
string account = behavior.Inspector.Account;
            }
}&lt;/pre&gt;
&lt;p&gt;参考资源：&lt;a href=&quot;http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&quot;&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209005/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>调用SharePoint Web Service本来就不是一件令人愉悦的事情，如果期间在遇到一些诡异的问题的话……譬如我今天遇到的这件 …… 按照惯例，添加好引用，编写代码调用GetUserProfileByNameAsync方法，稍等一下，一个异常抛出了（liao），大概反序列化某个属性时发生了错误。 而这个错误竟然是因为Visual Studio生成的Reference.cs文件和SharePoint提供的WSDL文件映射错误引起的，解决方法就是手工更改Reference.cs文件，该文件的路径是：项目文件夹\Service References\引用名称\Reference.cs。 打开后定位到PropertyData类，我们需要给以下5个属性重新排序，顺序如下： IsPrivacyChanged IsValueChanged Values Name Privacy 重新排序的方法就是找到这几个属性，修改它们各自的System.Runtime.Serialization.DataMemberAttribute，修改或增加参数Order，如： 这一步完成之后，调用GetUserProfileByNameAsync方法不会再抛出异常了，但是拿到的结果中，所有的PropertyData.Values都为null，但其实SharePoint Server已经返回了结果，但这些结果并没有被正确的反序列化出来，好在我们还有办法直接去解析原始的XML结果。 我们首先需要实现一个IEndpointBehavior和IClientMessageInspector： 然后更改一下调用Web Service的代码，把刚才写的UserProfilesBehavior以Behavior和UserState的形式进去： 那么在GetUserProfileByNameAsync完成时的事件处理程序中，就可以通过UserState——也就是刚才编写的UserProfilesBehavior来拿到需要的数据了： 参考资源：http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&lt;img src=&quot;http://www1.feedsky.com/t1/604209005/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint</category><category>Silverlight</category><category>异常</category><category>UserProfiles</category><category>Silverlight/WPF</category><pubDate>Mon, 17 Oct 2011 19:58:29 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1097</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209005/1488721</fs:itemid></item><item><title>版本历史</title><link>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/</link><content:encoded>&lt;h3&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot;&gt;« Human Calendar for Windows Phone 7&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;v1.2.0.0 &lt;/strong&gt;2011-09-26&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持中文显示（仅指界面，非日历）&lt;/li&gt;
&lt;li&gt;+ 支持在后台只更新Tile图片，以节省流量&lt;/li&gt;
&lt;li&gt;+ 延长后台任务的默认过期时间（14天），请在每两周内打开一次应用来延长后台任务的过期时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.1.0.0 &lt;/strong&gt;2011-09-01&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 当www.humancalendar.com没有提供日历时，显示默认日历&lt;/li&gt;
&lt;li&gt;* 改善用户界面&lt;/li&gt;
&lt;li&gt;* 减小程序体积&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.0.0.0 &lt;/strong&gt;2011-08-25&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持显示当月日历&lt;/li&gt;
&lt;li&gt;+ 支持固定到开始屏幕并显示当天日历&lt;/li&gt;
&lt;li&gt;+ 支持后台更新&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209006/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>« Human Calendar for Windows Phone 7 v1.2.0.0 2011-09-26 + 支持中文显示（仅指界面，非日历） + 支持在后台只更新Tile图片，以节省流量 + 延长后台任务的默认过期时间（14天），请在每两周内打开一次应用来延长后台任务的过期时间。 v1.1.0.0 2011-09-01 + 当www.humancalendar.com没有提供日历时，显示默认日历 * 改善用户界面 * 减小程序体积 v1.0.0.0 2011-08-25 + 支持显示当月日历 + 支持固定到开始屏幕并显示当天日历 + 支持后台更新&lt;img src=&quot;http://www1.feedsky.com/t1/604209006/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 31 Aug 2011 15:58:30 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/apps/human-calendar-for-windows-phone-7/changelog/</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209006/1488721</fs:itemid></item><item><title>Human Calendar for Windows Phone</title><link>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/</link><content:encoded>&lt;p&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;HumanCalendar&quot; src=&quot;http://coding.windstyle.cn/files/2011/08/HumanCalendar.jpg&quot; alt=&quot;HumanCalendar&quot; width=&quot;560&quot; height=&quot;227&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Human Calendar是一款Windows Phone 7上的日历应用，和寻常的日历有所不同，Human Calendar中的日期都是一个个现实生活中的人物，表情丰富、俏皮可爱，在查看日期的同时也能给您带来一份好心情。&lt;/p&gt;
&lt;p&gt;感谢&lt;a href=&quot;http://www.humancalendar.com/&quot; target=&quot;_blank&quot;&gt;the human calendar ®&lt;/a&gt;提供API。&lt;/p&gt;
&lt;h3&gt;功能介绍&lt;/h3&gt;
&lt;p&gt;Human Calendar包含一个完整的当月日历和一个当天日历，当您把Human Calendar固定到开始屏幕后，您就可以看到当天日历了，当天日历是一个四格日历，提供年月日以及星期信息。&lt;/p&gt;
&lt;p&gt;Human Calendar支持后台每日自动更新日历以及启动应用时自动更新日历，您可以根据喜好来选择。&lt;/p&gt;
&lt;h3&gt;系统要求&lt;/h3&gt;
&lt;p&gt;Windows Phone 7.1（Mango）以及更新的系统&lt;/p&gt;
&lt;h3&gt;版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;当前版本：1.2.0.0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot;&gt;版本历史»&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;截图&amp;amp;预览：&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_1.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;主界面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_1_thumb.png&quot; alt=&quot;主界面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_2.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;设置界面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_2_thumb.png&quot; alt=&quot;设置界面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_3.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;Live Tile 四格当天日历&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_3_thumb.png&quot; alt=&quot;Live Tile 四格当天日历&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_4.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;Live Tile 四格当天日历 反面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_4_thumb.png&quot; alt=&quot;Live Tile 四格当天日历 反面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;下载&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://windowsphone.com/s?appid=18e21357-5a16-4967-ac01-c0fa905c1cb9&quot;&gt;使用Zune客户端下载到手机&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/604209007/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Human Calendar是一款Windows Phone 7上的日历应用，和寻常的日历有所不同，Human Calendar中的日期都是一个个现实生活中的人物，表情丰富、俏皮可爱，在查看日期的同时也能给您带来一份好心情。 感谢the human calendar ®提供API。 功能介绍 Human Calendar包含一个完整的当月日历和一个当天日历，当您把Human Calendar固定到开始屏幕后，您就可以看到当天日历了，当天日历是一个四格日历，提供年月日以及星期信息。 Human Calendar支持后台每日自动更新日历以及启动应用时自动更新日历，您可以根据喜好来选择。 系统要求 Windows Phone 7.1（Mango）以及更新的系统 版本 当前版本：1.2.0.0 版本历史» 截图&amp;#38;预览：     下载 使用Zune客户端下载到手机&lt;img src=&quot;http://www1.feedsky.com/t1/604209007/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 31 Aug 2011 15:52:06 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?page_id=1075</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/604209007/1488721</fs:itemid></item></channel></rss>
