<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_{GnieTech}</title><subtitle type="text">分享是一种快乐 分享技术是一种美德</subtitle><id>http://feed.cnblogs.com/blog/u/44053/rss</id><updated>2011-12-07T14:33:28Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/44053/rss"/><entry><id>http://www.cnblogs.com/gnielee/archive/2011/10/19/ebook-share-silverlight-for-windows-phone-toolkit-in-depth.html</id><title type="text">免费Ebook 分享《Silverlight for Windows Phone Toolkit in Depth》</title><summary type="text">刚下了一本由Boryana Miloshevska 编写的《Silverlight for Windows Phone Toolkit in Depth》，提到Windows Phone Toolkit 大家应该不陌生，其中包含了很多Windows Phone 开发需要的组件。在这本书中全面细致的对Windows Phone Toolkit 进行了介绍，而且是全彩色图文并茂。</summary><published>2011-10-19T12:53:00Z</published><updated>2011-10-19T12:53:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/10/19/ebook-share-silverlight-for-windows-phone-toolkit-in-depth.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/10/19/ebook-share-silverlight-for-windows-phone-toolkit-in-depth.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 刚下了一本由Boryana Miloshevska 编写的《Silverlight for Windows Phone Toolkit in Depth》，提到&lt;a href="http://silverlight.codeplex.com/" target="_blank"&gt;Windows Phone Toolkit&lt;/a&gt; 大家应该不陌生，其中包含了很多Windows Phone 开发需要的组件。在这本书中全面细致的对Windows Phone Toolkit 进行了介绍，而且是全彩色图文并茂。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 书中包括了Windows Phone Toolkit 中所有控件，不论你是Windows Phone 开发的菜鸟还是老鸟，这本书的确不容错过！最新的Windows Phone Toolkit 全面支持Windows Phone 7.1 SDK（"Mango"）的开发。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;o AutoCompleteBox      &lt;br /&gt;o ContextMenu       &lt;br /&gt;o DatePicker       &lt;br /&gt;o DateTimeConverters       &lt;br /&gt;o ExpanderView       &lt;br /&gt;o Gestures       &lt;br /&gt;o HeaderedItemsControl       &lt;br /&gt;o HubTile       &lt;br /&gt;o ListPicker       &lt;br /&gt;o LocalizedResources       &lt;br /&gt;o LockablePivot       &lt;br /&gt;o LoopingSelector       &lt;br /&gt;o LongListSelector       &lt;br /&gt;o MultiselectList       &lt;br /&gt;o Page Transitions       &lt;br /&gt;o PerformanceProgressbar       &lt;br /&gt;o PhoneTextBox       &lt;br /&gt;o WrapPanel       &lt;br /&gt;o TiltEffect       &lt;br /&gt;o TimePicker       &lt;br /&gt;o ToggleSwitch&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image16" border="0" alt="image16" src="http://images.cnblogs.com/cnblogs_com/gnielee/201110/201110192052277761.png" width="404" height="474" /&gt;&lt;/p&gt;  &lt;p&gt;作者同时也说明了将本书作为免费提供的原因：&lt;/p&gt;  &lt;div &gt;   &lt;p&gt;&lt;strong&gt;Point1&lt;/strong&gt;. First of all, because “Silverlight for Windows Phone Toolkit” is a FREE library with great controls, provided by Microsoft.       &lt;br /&gt;&lt;strong&gt;Point2&lt;/strong&gt;. There is a lot of paid content on the web regarding Windows Phone development and quite a few FREE one.       &lt;br /&gt;This was the reason why I founded www.windowsphonegeek.com about a year ago: to create a FREE community with high quality and up to date windows phone       &lt;br /&gt;development content. So having in mind that there is no documentation for the toolkit or any books available, I decided to write and share a FREE one.&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;下载地址&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.windowsphonegeek.com/WPToolkitBook"&gt;http://www.windowsphonegeek.com/WPToolkitBook&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2218179.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/10/19/ebook-share-silverlight-for-windows-phone-toolkit-in-depth.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/09/29/windows-phone-sdk-7-1-release.html</id><title type="text">Windows Phone SDK 7.1 发布</title><summary type="text">“Mango”发布后，相应的Windows Phone SDK 7.1 也正式发布了，利用它能够开发支持Windows Phone 7.0 或Windows Phone 7.5 两种系统平台的手机设备。</summary><published>2011-09-29T14:47:00Z</published><updated>2011-09-29T14:47:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/09/29/windows-phone-sdk-7-1-release.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/09/29/windows-phone-sdk-7-1-release.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; “Mango”发布后，相应的Windows Phone SDK 7.1 也正式发布了，利用它能够开发支持Windows Phone 7.0 或Windows Phone 7.5 两种系统平台的手机设备。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;开发包内容&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Microsoft Visual Studio 2010 Express for Windows Phone &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows Phone Emulator&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows Phone SDK 7.1 Assemblies &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Silverlight 4 SDK and DRT &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows Phone SDK 7.1 Extensions for XNA Game Studio 4.0 &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Microsoft Expression Blend SDK for Windows Phone 7 &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Microsoft Expression Blend SDK for Windows Phone OS 7.1 &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· WCF Data Services Client for Window Phone &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Microsoft Advertising SDK for Windows Phone&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;系统要求&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Supported Operating Systems: Windows 7, Windows Vista&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows® Vista® (x86 and x64) with Service Pack 2 – all editions except Starter Edition&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows 7 (x86 and x64) – all editions except Starter Edition&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Installation requires 4 GB of free disk space on the system drive.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· 3 GB RAM&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;· Windows Phone Emulator requires a DirectX 10 or above capable graphics card with a WDDM 1.1 driver&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Windows Phone SDK 7.1 也全面支持Visual Studio 2010 SP1，如果您先前安装过Windows Phone SDK 7.1 Beta 或RC 版本的开发包，请先将其卸载后再安装正式版本。另，目前页面也提供了&lt;a href="http://go.microsoft.com/fwlink/?LinkID=226694" target="_blank"&gt;ISO 文件格式下载&lt;/a&gt;。&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27570" target="_blank"&gt;进入下载页面&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292246458285.png" width="520" height="468" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Download" border="0" alt="Download" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292246491760.png" width="521" height="469" /&gt;&lt;/p&gt;  &lt;p&gt;Windows Phone Developer 们赶快下载吧～～&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2195994.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/09/29/windows-phone-sdk-7-1-release.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/09/29/mango-release.html</id><title type="text">“Mango”来了！！</title><summary type="text">就在美国当地时间9月27日，期待已久的Mango 系统终于发布了，比先前网络上流传的10月中旬提早了近2周时间。28日一早将手机连上电脑，便看到Mango 更新提示。按奈不住激动的心情要赶紧吃到“Mango”。</summary><published>2011-09-29T14:21:00Z</published><updated>2011-09-29T14:21:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/09/29/mango-release.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/09/29/mango-release.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 就在美国当地时间9月27日，期待已久的Mango 系统终于发布了，比先前网络上流传的10月中旬提早了近2周时间。28日一早将手机连上电脑，便看到Mango 更新提示。按奈不住激动的心情要赶紧吃到“Mango”。本人手机型号是HD7，之前升级过Windows Phone Developer 7712 Beta 版。&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="UpdateInfo" border="0" alt="UpdateInfo" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292220448732.jpg" width="668" height="299" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;提示可用更新：Update for Windows Phone 7 for ISV beta (7720)&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Update" border="0" alt="Update" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292220506153.jpg" width="632" height="629" /&gt;&lt;/p&gt;  &lt;p&gt;开始下载更新程序进行更新：&lt;/p&gt;  &lt;p&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="DownloadUpdate" border="0" alt="DownloadUpdate" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292220527841.jpg" width="632" height="557" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 系统升级到Mango 后，便受到Mango ISV beta Bundle: Cleanup 更新。这个就是升级过7712 Beta 版后的清理更新，免去回滚到NoDo 之苦。赞！&lt;/p&gt;  &lt;p&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="CleanUp" border="0" alt="CleanUp" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292220544054.jpg" width="585" height="297" /&gt;&lt;/p&gt;  &lt;p&gt;继续更新Cleanup：&lt;/p&gt;  &lt;p&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="CleanUpInfo" border="0" alt="CleanUpInfo" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292221001541.jpg" width="628" height="546" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 更新完Cleanup 后，紧接着又收到第三个更新：HTC Update for Windows Phone，这个是HTC 根据Mango 系统发布的手机硬件更新。&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="HTCUpdate" border="0" alt="HTCUpdate" src="http://images.cnblogs.com/cnblogs_com/gnielee/201109/201109292221059933.jpg" width="630" height="557" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 至此，三个更新完成后终于见到期待已久的“Mango”了。感觉和7712 变化不大。其一，原来“中国移动”的字样变成了英文“CHINA MOBILE”，文字终于和谐了。其二，原来HTC 的程序Attentive Phone，直接整合到Mango 的Settings 中了。害得我升级Attentive Phone 后还找了半天程序在哪。再有就是一些App 也相继需要更新。总体来说没有什么太多惊喜，至少是正式版本了！“Mango”还要慢慢品尝。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2195976.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/09/29/mango-release.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/08/26/wpf-surface2sdk-librarycontainer.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇</title><summary type="text">看过前面关于LibraryStack 和LibraryBar 的介绍后，大家可能已经对Library 控件系列有了进一步了解，本篇将继续介绍LibraryContainer，它其实就是LibraryStack、LibrayBar 的集合体。</summary><published>2011-08-26T06:23:00Z</published><updated>2011-08-26T06:23:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/08/26/wpf-surface2sdk-librarycontainer.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/08/26/wpf-surface2sdk-librarycontainer.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 最近比较懒惰一直都没写东西，再不写笔里的墨水就快干了。看过前面关于&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/05/wpf-surface2sdk-librarystack.html" target="_blank"&gt;LibraryStack&lt;/a&gt; 和&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html" target="_blank"&gt;LibraryBar&lt;/a&gt; 的介绍后，大家可能已经对Library 控件系列有了进一步了解，本篇将继续介绍LibraryContainer，它其实就是LibraryStack、LibrayBar 的集合体。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 首先，我们仍然需要创建一个DataTemplate 用来控制LibraryStack、LibrayBar 的显示样式。然后新建一个LibraryContainer，在其中增加StackView 和BarView 两种浏览模式。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LibraryBarItemTemplate&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;Bitmap&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;14&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mlibraryContainer&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer.StackView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackView &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;LibraryBarItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer.StackView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer.BarView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;BarView &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;LibraryBarItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer.BarView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryContainer&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 与上一篇&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html" target="_blank"&gt;LibraryBar&lt;/a&gt; 一样我们继续使用分组的浏览模式，按GroupName 进行分组操作，PhotoAlbum 类请参考&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html" target="_blank"&gt;这里&lt;/a&gt;。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;&amp;gt; items = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;&amp;gt;();&#xD;
&lt;span style="color: blue"&gt;string &lt;/span&gt;imagesPath = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\&amp;quot;&lt;/span&gt;;&#xD;
&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Hydrangeas.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Hydrangeas&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Lighthouse.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Lighthouse&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Tulips.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Tulips&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Jellyfish.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Jellyfish&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Koala.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Koala&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Penguins.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Penguins&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
&#xD;
mlibraryContainer.ItemsSource = items;&#xD;
&lt;span style="color: #2b91af"&gt;ICollectionView &lt;/span&gt;defaultView = &lt;span style="color: #2b91af"&gt;CollectionViewSource&lt;/span&gt;.GetDefaultView(items);&#xD;
defaultView.GroupDescriptions.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyGroupDescription&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;GroupName&amp;quot;&lt;/span&gt;));&lt;/pre&gt;&#xD;
&#xD;
&#xD;
&lt;p&gt;运行效果：&lt;/p&gt;&#xD;
&#xD;
&lt;p&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="Capture" border="0" alt="Capture" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108261422367040.png" width="354" height="357" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;按分组选择：&lt;/p&gt;&#xD;
&#xD;
&lt;p&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="Capture2" border="0" alt="Capture2" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108261422382905.png" width="304" height="305" /&gt;&amp;#160;&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="Capture4" border="0" alt="Capture4" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108261422395871.png" width="304" height="339" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;点击下方按钮切换为BarView 模式：&lt;/p&gt;&#xD;
&#xD;
&lt;p&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="Capture3" border="0" alt="Capture3" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108261422407724.png" width="614" height="282" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2154562.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/26/wpf-surface2sdk-librarycontainer.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触–LibraryBar 篇</title><summary type="text">与LibraryStack 类似LibraryBar 也属于ItemsControl，在LibraryBar 里的组件会以水平平铺方式展示，并且也可以对其中的组件进行按组分类。同样LibraryBar 也是默认支持拖拽操作。</summary><published>2011-08-07T05:58:00Z</published><updated>2011-08-07T05:58:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html"/><content type="html">&lt;p&gt;&lt;strong&gt;LibraryBar 介绍&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 与LibraryStack 类似LibraryBar 也属于ItemsControl，在LibraryBar 里的组件会以水平平铺方式展示，并且也可以对其中的组件进行按组分类。同样LibraryBar 也是默认支持拖拽操作。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 下面的例子将通过LibraryBar 展示一组Sample 图片。首先，仍然可以使用DataTemplate 作为LibraryBar 的样式模板用来绑定图片资源。接下来在Grid 中添加LibraryBar 控件，并设置好ItemTemplate 数据模板。我们可以通过修改Rows 参数调整LibraryBar 中组件显示的行数。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Demo.SurfaceWindow1&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/surface/2008&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LibraryBar&amp;quot;&#xD;
&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LibraryBarItemTemplate&amp;quot;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryBar &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mLibraryBar&amp;quot; &lt;font color="#ff0000"&gt;Rows&lt;/font&gt;&lt;span style="color: blue"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br /&gt;                      &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;LibraryBarItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 为LiraryBar 添加图片数据源。注意，同样不能将图片string[] 数组直接赋给LiraryBar，需要借助ObservableCollection。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;imagesPath = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\&amp;quot;&lt;/span&gt;;&#xD;
&lt;span style="color: blue"&gt;try&#xD;
&lt;/span&gt;{&#xD;
    &lt;span style="color: blue"&gt;string&lt;/span&gt;[] files = System.IO.&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.GetFiles(imagesPath, &lt;span style="color: #a31515"&gt;&amp;quot;*.jpg&amp;quot;&lt;/span&gt;);&#xD;
    &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; items = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(files);&#xD;
    mLibraryBar.ItemsSource = items;&#xD;
}&#xD;
&lt;span style="color: blue"&gt;catch &lt;/span&gt;(System.IO.&lt;span style="color: #2b91af"&gt;DirectoryNotFoundException&lt;/span&gt;)&#xD;
{&#xD;
    &lt;span style="color: green"&gt;// Error info.&#xD;
&lt;/span&gt;}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;默认两行模式：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2Row" border="0" alt="2Row" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108071357207968.png" width="504" height="343" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;三行模式：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3Row" border="0" alt="3Row" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108071357405539.png" width="391" height="447" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;LibraryBar 分组&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 接下来我们将图片进行分组操作，先增加一个PhotoAlbum 类，其中包含图片的路径、标签、组名信息。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&#xD;
&lt;/span&gt;{&#xD;
    &lt;span style="color: blue"&gt;private string &lt;/span&gt;label;&#xD;
    &lt;span style="color: blue"&gt;private string &lt;/span&gt;fileName;&#xD;
    &lt;span style="color: blue"&gt;private string &lt;/span&gt;groupName;&#xD;
    &lt;span style="color: blue"&gt;private &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage &lt;/span&gt;bitmap;&#xD;
&#xD;
    &lt;span style="color: blue"&gt;public &lt;/span&gt;PhotoAlbum(&lt;span style="color: blue"&gt;string &lt;/span&gt;fileName, &lt;span style="color: blue"&gt;string &lt;/span&gt;label, &lt;span style="color: blue"&gt;string &lt;/span&gt;groupName)&#xD;
    {&#xD;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.fileName = fileName;&#xD;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.label = label;&#xD;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.groupName = groupName;&#xD;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.bitmap = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapImage&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(fileName, &lt;span style="color: #2b91af"&gt;UriKind&lt;/span&gt;.Absolute));&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: blue"&gt;public string &lt;/span&gt;Label&#xD;
    {&#xD;
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;label; }&#xD;
    }&lt;br /&gt;&#xD;
&lt;span style="color: blue"&gt;    public string &lt;/span&gt;FileName&#xD;
    {&#xD;
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;fileName; }&#xD;
    }&#xD;
&lt;br /&gt;&#xD;
    &lt;span style="color: blue"&gt;public string &lt;/span&gt;GroupName&#xD;
    {&#xD;
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;groupName; }&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;BitmapSource &lt;/span&gt;Bitmap&#xD;
    {&#xD;
        &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;bitmap; }&#xD;
    }&#xD;
}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;对DataTemplate 稍作修改，添加图片标签&amp;lt;Label&amp;gt;。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LibraryBarItemTemplate&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;Bitmap&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;14&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryBar &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mLibraryBar&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Rows&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;2&amp;quot;&#xD;
                  &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;LibraryBarItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 依据GroupName 作为分组的方式，为GroupDescriptions 默认的集合浏览方式添加PropertyGroupDescription 对象，并赋给ItemsSource 属性。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;&amp;gt; items = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;&amp;gt;();&#xD;
&lt;span style="color: blue"&gt;string &lt;/span&gt;imagesPath = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\&amp;quot;&lt;/span&gt;;&#xD;
&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Hydrangeas.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Hydrangeas&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Lighthouse.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Lighthouse&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Tulips.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Tulips&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Nature&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Jellyfish.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Jellyfish&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Koala.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Koala&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
items.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;(imagesPath + &lt;span style="color: #a31515"&gt;&amp;quot;Penguins.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Penguins&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Animal&amp;quot;&lt;/span&gt;));&#xD;
&#xD;
mLibraryBar.ItemsSource = items;&#xD;
&lt;span style="color: #2b91af"&gt;ICollectionView &lt;/span&gt;defaultView = &lt;span style="color: #2b91af"&gt;CollectionViewSource&lt;/span&gt;.GetDefaultView(items);&#xD;
defaultView.GroupDescriptions.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyGroupDescription&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;GroupName&amp;quot;&lt;/span&gt;));&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Group" border="0" alt="Group" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108071358031394.png" width="604" height="286" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;LibraryBar 拖拽&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 从上面的示例中可以发现，我们无法将图片从LibraryBar 中拖拽出来，当拖拽操作结束后图片会自动返回到LibraryBar。接下来将实现把图片拖拽到ScatterView 控件。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 首先，对XAML 控件进行下修改，将LibraryBar 放入ScatterView 控件。这里需要将ScatterView 的AllwoDrop 属性设为True，背景也要填充颜色，可设置为Transparent 透明，这样才能保证LibraryBar 中的组件可以拖拽到ScatterView 中。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;scatterView&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;SurfaceDragDrop.Drop&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;scatterView_Drop&amp;quot;&#xD;
                   &lt;/span&gt;&lt;span style="color: red"&gt;AllowDrop&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Transparent&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterViewItem &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;500&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryBar &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mLibraryBar&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Rows&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;2&amp;quot; &#xD;
                          &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;LibraryBarItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 其次，为ScatterView 添加SurfaceDragDrop.Drop 事件用于处理拖拽的操作。在事件触发时，新建一个ScatterViewItem（newItem） 用于装载被拖动的图片组件。将e.Cursor.Data 转化为PhotoAlbum，借助FileName 属性新建MediaElement。将MediaElement（mediaItem）赋给newItem.Content，并通过GetPosition 获取到拖拽动作的位置作为newItem 在ScatterView 中的显示位置。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;scatterView_Drop(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;SurfaceDragDropEventArgs &lt;/span&gt;e)&#xD;
{&#xD;
    &lt;span style="color: #2b91af"&gt;PhotoAlbum &lt;/span&gt;data = e.Cursor.Data &lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PhotoAlbum&lt;/span&gt;;&#xD;
    &#xD;
    &lt;span style="color: #2b91af"&gt;ScatterViewItem &lt;/span&gt;newItem = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ScatterViewItem&lt;/span&gt;();&#xD;
    &lt;span style="color: #2b91af"&gt;MediaElement &lt;/span&gt;mediaItem = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MediaElement&lt;/span&gt;();&#xD;
    mediaItem.Source = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(data.FileName);&#xD;
    newItem.Background = &lt;span style="color: #2b91af"&gt;Brushes&lt;/span&gt;.Transparent;&#xD;
    newItem.Content = mediaItem;&#xD;
    newItem.Center = e.Cursor.GetPosition(scatterView);&#xD;
    &#xD;
    scatterView.Items.Add(newItem);&#xD;
}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 这样我们就实现了将LibraryBar 中的组件拖拽到ScatterView。MSDN 上也提供了文档供大家参考：&lt;a href="http://msdn.microsoft.com/en-us/library/ee804812(v=Surface.10).aspx" target="_blank"&gt;Using the Microsoft Surface Drag-and-Drop Framework&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Drag" border="0" alt="Drag" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108071358157664.png" width="554" height="386" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2129956.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/07/wpf-surface2sdk-librarybar.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/08/05/wpf-surface2sdk-librarystack.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触–LibraryStack 篇</title><summary type="text">LibraryStack 本身属于ItemsControl，可以将其他组件以一种集合的方式显示出来，用户可以在LibraryStack 中逐一浏览如图片类的组件，而且它默认支持拖拽操作。</summary><published>2011-08-05T10:56:00Z</published><updated>2011-08-05T10:56:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/08/05/wpf-surface2sdk-librarystack.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/08/05/wpf-surface2sdk-librarystack.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LibraryStack 本身属于ItemsControl，可以将其他组件以一种集合的方式显示出来，用户可以在LibraryStack 中逐一浏览如图片类的组件，而且它默认支持拖拽操作。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在下面的例子中我们将通过LibraryStack 展示一组图片。首先，为LibraryStack 编写一个DataTemplate 用来绑定图片样式。接下来在Grid 中添加LibraryStack 控件，并设置好数据模板。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Demo.SurfaceWindow1&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/surface/2008&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LibraryStack&amp;quot;&#xD;
&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ItemTemplate&amp;quot;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;LibraryStack &lt;/span&gt;&lt;span style="color: red"&gt;x:Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mLibraryStack&amp;quot; &lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 最后，为LiraryStack 添加数据源。注意，不能将图片string[] 数组直接赋给LiraryStack，需要借助ObservableCollection。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;imagesPath = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\&amp;quot;&lt;/span&gt;;&#xD;
&lt;span style="color: blue"&gt;try&#xD;
&lt;/span&gt;{&#xD;
    &lt;span style="color: blue"&gt;string&lt;/span&gt;[] files = System.IO.&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.GetFiles(imagesPath, &lt;span style="color: #a31515"&gt;&amp;quot;*.jpg&amp;quot;&lt;/span&gt;);&#xD;
    &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; items = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(files);&#xD;
    mLibraryStack.ItemsSource = items;&#xD;
}&#xD;
&lt;span style="color: blue"&gt;catch &lt;/span&gt;(System.IO.&lt;span style="color: #2b91af"&gt;DirectoryNotFoundException&lt;/span&gt;)&#xD;
{&#xD;
    &lt;span style="color: green"&gt;// Error info.&#xD;
&lt;/span&gt;}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;运行界面：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="LibraryStack" border="0" alt="LibraryStack" src="http://images.cnblogs.com/cnblogs_com/gnielee/201108/201108051856011552.png" width="454" height="428" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2128958.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/08/05/wpf-surface2sdk-librarystack.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/07/21/people-hub-trouble.html</id><title type="text">由People Hub 引发的那些事儿</title><summary type="text">使用Windows Phone 7 的朋友应该很清楚People Hub 也就是Windows Phone 7 里的联系人模块里面保存着两类联系人信息：1. 导入自手机SIM 卡；2. 同步Windows Live 联系人。总共加起来我的People Hub 里有上百个联系人，不使用搜索的话找起人来好麻烦。</summary><published>2011-07-21T07:45:00Z</published><updated>2011-07-21T07:45:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/07/21/people-hub-trouble.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/07/21/people-hub-trouble.html"/><content type="html">&lt;p&gt;&lt;strong&gt;起因&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 使用Windows Phone 7 的朋友应该很清楚People Hub 也就是Windows Phone 7 里的联系人模块里面保存着两类联系人信息：1. 导入自手机SIM 卡；2. 同步Windows Live 联系人。总共加起来我的People Hub 里有上百个联系人，不使用搜索的话找起人来好麻烦。于是乎就想到把一些不常用的Windows Live 联系人删除，这样可以减少很多记录。&lt;/p&gt;  &lt;p&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="People Hub" border="0" alt="People Hub" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545023453.jpg" width="554" height="264" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;噩梦&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 只能说我自己太不了解People Hub 的功能。删除联系人时也没多想，三下五除二Contact List 变得很清爽。可万万没想到的事情发生了，第二天打开Live Messenger 发现那些被我删除的人都Disappeared？！很明显People Hub 将我的操作全部同步到Windows Live。没办法只能重新添加一遍，还好我没将所有人删除... ... &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 询问其他好友信息开始在Live Messenger 里添加，但是新加的好友在Live Messenger 始终无法显示，让对方重新加我也是一样，而且我在对方Live Messenger 里总是显示脱机。这是神马情况啊？真服了Live Messenger... ...&lt;/p&gt;  &lt;p&gt;转机&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 好吧！Live Messenger 看了是没戏了，只好登录到Live.com 看看有没有希望。首先发现了“添加好友”功能，打开页面突然有一缕阳光破云而出的感觉（如下图）。赶紧把好友Live 邮箱地址填了进去，点击“下一步”进度条完成，邀请似乎发出去了。对方反馈已经在Live Messenger 收到消息。再看看自己的Live Messenger 一个好友已经添加完毕。嗨，终于是有救了... ...&lt;/p&gt;  &lt;p&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="AddContact" border="0" alt="AddContact" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545138917.png" width="422" height="144" /&gt;&lt;/p&gt;  &lt;p&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="AddContact2" border="0" alt="AddContact2" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545169949.png" width="520" height="248" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Live.com 平时也不经常用，登录上来也没仔细看过。 于是怀着期待的心情开始研究起来，当看到下图菜单时我泪流满面啊～～ Windows Live 里居然还有“还原已删除联系人”的功能。这里面有我删除的所有联系人信息，但要注意的是30天以前删除的无法恢复。&lt;/p&gt;  &lt;p&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="Restore" border="0" alt="Restore" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545186785.png" width="356" height="172" /&gt;&lt;/p&gt;  &lt;p&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="Restore2" border="0" alt="Restore2" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545231731.png" width="624" height="161" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;发现&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 联系人恢复后，突然发现在Live 联系人列表中居然有我SIM 卡上的联系人信息，说明People Hub 把SIM 卡的联系人也同步到Windows Live 了。而且可以将重复的联系人进行合并。比如，我SIM 卡上有个叫“张三”的联系人，一般只保存电话信息；Windows Live 里也有“张三”，保存着Live Messenger、邮箱、地址等信息，就可以将这两个记录合并为一个。这样一来People Hub 里的联系人记录会明显减少，联系人重复的问题也同时得到解决。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如果说Windows Live 里保存了SIM 卡的联系人，那是不是以后就不再需要将SIM 卡上的联系人导入WP7 了？抱着好奇的心情我再次手贱起来，不过这次是很有把握的操作，于是将手机Reset（恢复出厂设置）... ...&amp;#160; 重新启动手机所有的数据都会消失。那些心存好奇的童鞋注意了是“全部数据都会消失”，包括：下载的应用程序、音乐、图片、视频、自定义设置等，可以说和新买的机器一样。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在重启和People Hub 里我们都不要选择导入SIM 联系人。进入Settings 界面将Windows Live 与手机进行绑定，经过几分钟同步后，所有Live 联系人数据便会全部同步到People Hub 里，包括之前提到的SIM 卡联系人。如果手机丢了也不必担心联系人电话号码丢失的后续问题，而且也可以尝试&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/06/23/windows-live-and-windows-phone-7.html" target="_blank"&gt;Windows Live &amp;amp; Windows Phone 7&lt;/a&gt; 文章中提到的找手机的方法。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 另外，当你第一次用Live Id 登录手机后，Windows Live 中会记录下手机信息（如下图），其功能请参考&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/06/23/windows-live-and-windows-phone-7.html" target="_blank"&gt;Windows Live &amp;amp; Windows Phone 7&lt;/a&gt; 。主要是寻找手机、日历、文档等功能。如果将这个信息删除的话是无法通过同步恢复的，只能Reset 手机并重新登录一次Live Id。&lt;/p&gt;  &lt;p&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="HD7" border="0" alt="HD7" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107211545252679.png" width="477" height="377" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 经过几天的折腾，终于搞明白Windows Live 与Windows Phone 7 的关系了，希望本文能对大家有所帮助。总结内容如下：&lt;/p&gt;  &lt;p&gt;1. People Hub 的联系人与Windows Live 是实时同步的，当然也可以在People 设置里手动同步。导入自SIM 卡的联系人信息也会同步到Windows Live。&lt;/p&gt;  &lt;p&gt;2. 重复的联系人可在Windows Live 中进行合并操作（Live.com）。&lt;/p&gt;  &lt;p&gt;3. 误删的联系人也可在Windows Live 中恢复，但时间不能超过30天。&lt;/p&gt;  &lt;p&gt;4. Windows Phone 7 恢复出厂设置后，所有数据将全部丢失。而且有一种说法是：“如果用Zune 下载的App 可以通过Zune 自动同步回手机上。”经我测试似乎没有这个功能，至少现在那些App 还没回到我手机上。&lt;/p&gt;  &lt;p&gt;5. 首次用Live Id 登录Windows Phone 7 后，Windows Live 会记录该手机信息，并提供一些强大的功能（请参考上面提到的博文）。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2112917.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/21/people-hub-trouble.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/07/18/wpf-surface2sdk-binding.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触 - ScatterView 数据绑定篇</title><summary type="text">与我们常用的一些WPF 控件相同，ScatterView 控件也支持数据绑定功能。本篇将演示如何利用ScatterView 绑定Win7 系统中的样例图片，并且每张图片会以独立的ScatterViewItem 形式展现出来。</summary><published>2011-07-18T08:01:00Z</published><updated>2011-07-18T08:01:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/07/18/wpf-surface2sdk-binding.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/07/18/wpf-surface2sdk-binding.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 与我们常用的一些WPF 控件相同，ScatterView 控件也支持数据绑定功能。本篇将演示如何利用ScatterView 绑定Win7 系统中的样例图片，并且每张图片会以独立的ScatterViewItem 形式展现出来。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 首先，新建一个Surface Application(WPF) 项目，在Grid 中添加ScatterView 控件，并命名为mainScatterView。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mainScatterView&amp;quot;&amp;gt;&#xD;
        &#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;在C# 代码中将“Sample Pictures”目录下的图片全部添加到ScatterView 的ItemsSource。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;string &lt;/span&gt;imagesPath = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\&amp;quot;&lt;/span&gt;;&#xD;
&lt;span style="color: blue"&gt;try&#xD;
&lt;/span&gt;{&#xD;
    mainScatterView.ItemsSource = System.IO.&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.GetFiles(imagesPath, &lt;span style="color: #a31515"&gt;&amp;quot;*.jpg&amp;quot;&lt;/span&gt;);&#xD;
}&#xD;
&lt;span style="color: blue"&gt;catch &lt;/span&gt;(System.IO.&lt;span style="color: #2b91af"&gt;DirectoryNotFoundException&lt;/span&gt;)&#xD;
{&#xD;
    &lt;span style="color: green"&gt;// Write Error info here.&#xD;
&lt;/span&gt;}&lt;/pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 按下 F5 运行程序，ScatterView 会为每张图片创建一个ScatterViewItem 控件。但是由于XAML 代码中没有编写任何样式模板，所以ScatterViewItem 只显示出图片路径及名称而不是图片本身（如下图）。&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NoBinding" border="0" alt="NoBinding" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107181601231005.png" width="524" height="382" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 为了将图片在ScatterViewItem 显示出来，我们需要定义一个ItemTemplate，它可以使Image 对象与ScatterViewItem 控件绑定在一起。如下代码所示，DataTemplate 设置好数据源是Image 对象即可。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mainScatterView&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;/&amp;gt;&#xD;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 再次运行程序，ScatterViewItem 控件会依照ItemTemplate 属性重新创建，同时图片也会在ScatterView 控件中正常的显示。至此我们便完成了ScatterView 的绑定功能，便可以随意的对图片进行Manipulating 操作。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="PicBinding" border="0" alt="PicBinding" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107181601268789.png" width="573" height="439" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2109645.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/18/wpf-surface2sdk-binding.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/07/17/wpf-surface2sdk-manipulate-shape.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触 - 图形缩放篇</title><summary type="text">通过上一篇的介绍大家应该已经了解到ScatterView 可以使开发者方便的实现控件的Manipulate 操作。细心的朋友可能发现了前面示例中矩形的缩放似乎有些问题，为了便于说明我们编写如下代码。</summary><published>2011-07-17T03:30:00Z</published><updated>2011-07-17T03:30:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/07/17/wpf-surface2sdk-manipulate-shape.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/07/17/wpf-surface2sdk-manipulate-shape.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 通过上一篇的介绍大家应该已经了解到&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/14/wpf-surface2sdk-scatterview.html" target="_blank"&gt;ScatterView&lt;/a&gt; 可以使开发者方便的实现控件的Manipulate 操作。细心的朋友可能发现了前面示例中矩形的缩放似乎有些问题，为了便于说明我们编写如下代码。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Blue&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;/&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Ellipse &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Red&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;150&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;80&amp;quot;/&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在ScatterView 中分别加入了矩形和椭圆形，并且为两个图形分析别限定了长、宽尺寸。当我们对图形进行缩放操作时发现，两个图形本身尺寸并没有发生任何变化，只有ScatterViewItem 尺寸变大了。似乎图形的大小已经被长、宽参数约束住了。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Original " border="0" alt="Original " src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107171130077335.png" width="504" height="356" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Resize " border="0" alt="Resize " src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107171130102054.png" width="504" height="356" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 遇到这种情况时需要使用Viewbox 控件中，Viewbox 并不是Surface 2.0 SDK 的控件，而是一个WPF 控件。它可以使图形随ScatterViewItem 尺寸的变化而变化。如下示例代码制作两个相同的矩形，并只将其中一个嵌入Viewbox 控件。从图中可以看到Viewbox 中的红色矩形会根据ScatterViewItem 尺寸变化而自动调节。这样当我们进行Manipulate 操作时，相应的控件尺寸也会随之变化。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Blue&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;/&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Viewbox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Red&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Viewbox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Viewbox" border="0" alt="Viewbox" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107171130142705.png" width="504" height="432" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2108637.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/17/wpf-surface2sdk-manipulate-shape.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/gnielee/archive/2011/07/14/wpf-surface2sdk-scatterview.html</id><title type="text">WPF 与Surface 2.0 SDK 亲密接触 - ScatterView 篇</title><summary type="text">以前的博文我曾向大家介绍过利用WPF 4 开发具有多点触屏功能的应用程序。在那些文章中无论是简单的拖拽，还是复杂的旋转、缩放效果都需要开发者逐字逐句的编写出来。Surface 2.0 SDK 的发布可以使这些工作更加简单，我们甚至不需要对这些效果写任何代码。</summary><published>2011-07-14T05:54:00Z</published><updated>2011-07-14T05:54:00Z</updated><author><name>Gnie</name><uri>http://www.cnblogs.com/gnielee/</uri></author><link rel="alternate" href="http://www.cnblogs.com/gnielee/archive/2011/07/14/wpf-surface2sdk-scatterview.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/gnielee/archive/2011/07/14/wpf-surface2sdk-scatterview.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 以前的博文我曾向大家介绍过利用WPF 4 开发具有多点触屏功能的应用程序，可参考《&lt;a href="http://www.cnblogs.com/gnielee/archive/2010/09/01/multi-touch-resources-summary.html"&gt;Multi-Touch 开发资源汇总&lt;/a&gt;》。在那些文章中无论是简单的拖拽，还是复杂的旋转、缩放效果（下文简称Manipulating）都需要开发者逐字逐句的编写出来。&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/13/microsoft-surface-2-sdk-release.html" target="_blank"&gt;Surface 2.0 SDK 的发布&lt;/a&gt;可以使这些工作更加简单，我们甚至不需要对这些效果写任何代码。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 本篇将为大家介绍如何使用ScatterView 控件实现上述功能。由于触屏技术只在Windows 7 操作系统中支持，所以XP 的用户必须要升级到Windows 7 系统。首先，需要在Windows 7 中安装Surface 2.0 SDK 和Runtime，可到&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26716" target="_blank"&gt;官方页面&lt;/a&gt;下载安装程序。安装完成后打开VS2010 新建一个Surface 2.0 项目。在模板中选择Surface Appliction(WPF)。&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CreateProject" border="0" alt="CreateProject" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107141354039261.png" width="564" height="402" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我们可以在当前的XAML 代码中添加一个Label 控件。F5 运行后Label 控件是无法进行Manipulating 操作的。&lt;/p&gt;  &lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ScatterView.SurfaceWindow1&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/surface/2008&amp;quot;&#xD;
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ScatterView&amp;quot;&#xD;
&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Surface 2.0&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Fuchsia&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;FontWeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Bold&amp;quot;/&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceWindow&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Label" border="0" alt="Label" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107141354058224.png" width="470" height="356" /&gt; &#xD;
&#xD;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 接下来在Grid 中添加一个ScatterView 控件。我们可以将ScatterView 认为是一个容器能够包含其他控件，并且这些控件均可以实现Manipulating 效果。例如，我们在ScatterView 中加入Rectangle、Label、SurfaceTextBox 三个控件。有些朋友可能会问Rectangle 为什么要放在ScatterViewItem 里？其实，所有在ScatterView 里的控件默认都会自动加入到ScatterViewItem，所以如果不需要特别设置可以将ScatterViewItem 控件省略。本例中我为了调整Rectangle 的减速数值就需要手动写出ScatterViewItem 控件，并调整Deceleration 参数。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;mainScatterView&amp;quot;&amp;gt;&#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterViewItem &lt;/span&gt;&lt;span style="color: red"&gt;Deceleration&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;50&amp;quot;&amp;gt;&#xD;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Green&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;/&amp;gt;&#xD;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
        &#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Surface 2.0&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Fuchsia&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;FontWeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Bold&amp;quot;/&amp;gt;&#xD;
        &#xD;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;SurfaceTextBox &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;500&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;20&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;20&amp;quot;/&amp;gt;&#xD;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScatterView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;完成上面代码后，F5 再运行一次。感觉如何？Manipulating 效果是不是变得很简单了... ...&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ItRun" border="0" alt="ItRun" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107141354071024.png" width="554" height="448" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;如果有需要可以自动加载控件到ScatterView，下面代码将自动加入一张本机图片到程序中。&lt;/p&gt;&#xD;
&#xD;
&lt;pre &gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;AddDemoPic()&#xD;
{&#xD;
    &lt;span style="color: blue"&gt;string &lt;/span&gt;targetPic = &lt;span style="color: #a31515"&gt;@&amp;quot;C:\Users\Public\Pictures\Sample Pictures\Koala.jpg&amp;quot;&lt;/span&gt;;&#xD;
&#xD;
    &lt;span style="color: #2b91af"&gt;ScatterViewItem &lt;/span&gt;item = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ScatterViewItem&lt;/span&gt;();&#xD;
    mainScatterView.Items.Add(item);&#xD;
&#xD;
    &lt;span style="color: #2b91af"&gt;MediaElement &lt;/span&gt;pic = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MediaElement&lt;/span&gt;();&#xD;
    item.Content = pic;&#xD;
    item.Background = &lt;span style="color: #2b91af"&gt;Brushes&lt;/span&gt;.Transparent;&#xD;
&#xD;
    &lt;span style="color: blue"&gt;if &lt;/span&gt;(System.IO.&lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.Exists(targetPic))&#xD;
    {&#xD;
        pic.Source = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(targetPic);&#xD;
    }&#xD;
    &lt;span style="color: blue"&gt;else&#xD;
    &lt;/span&gt;{&#xD;
        item.Content = &lt;span style="color: #a31515"&gt;&amp;quot;Picture not found&amp;quot;&lt;/span&gt;;&#xD;
    }&#xD;
}&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NicePicture" border="0" alt="NicePicture" src="http://images.cnblogs.com/cnblogs_com/gnielee/201107/201107141354127497.png" width="564" height="444" /&gt; &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;至此，本篇关于ScatterView 的介绍就到这里，欢迎大家相互交流。&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;相关参考&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.surface.presentation.controls.scatterview(v=Surface.20).aspx" target="_blank"&gt;ScatterView Class&lt;/a&gt;&lt;img src="http://www.cnblogs.com/gnielee/aggbug/2106287.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/gnielee/archive/2011/07/14/wpf-surface2sdk-scatterview.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
