﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-软件设计开发</title><link>http://www.cnblogs.com/virusswb/</link><description>.NET UML OO DataBase</description><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 00:07:53 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 00:07:53 GMT</pubDate><ttl>60</ttl><item><title>Silverlight3系列（九）Silverlight 及其相关技术简介</title><link>http://www.cnblogs.com/virusswb/archive/2010/02/09/1666282.html</link><dc:creator>virus</dc:creator><author>virus</author><pubDate>Tue, 09 Feb 2010 02:51:00 GMT</pubDate><guid>http://www.cnblogs.com/virusswb/archive/2010/02/09/1666282.html</guid><description><![CDATA[<p>阅读: 65 评论: 0 作者: <a href="http://www.cnblogs.com/virusswb/" target="_blank">virus</a> 发表于 2010-02-09 10:51 <a href="http://www.cnblogs.com/virusswb/archive/2010/02/09/1666282.html" target="_blank">原文链接</a></p><p>1、Silverlight应用类型</p>
<p>　　&#8226;RIA Rich Internet Applications</p>
<p>　　&#8226;是一种具有近似于传统桌面<a href="http://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6" target="_blank">应用软件</a>系统功能和特性的<a href="http://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" target="_blank">网络应用</a>系统。RIA系统最大的特点是将大部分处理任务都从<a href="http://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2" target="_blank">用户界面</a>端移植到<a href="http://zh.wikipedia.org/wiki/%E5%AE%A2%E6%88%B7%E7%AB%AF" target="_blank">客户端</a>，仅保留一些必要数据与<a href="http://zh.wikipedia.org/wiki/%E6%9C%8D%E5%8A%A1%E5%99%A8" target="_blank">服务器</a>端进行信息交互。 </p>
<p>　　&#8226;RIA系统的特性：&#8211;运行于<a href="http://zh.wikipedia.org/wiki/%E6%B5%8F%E8%A7%88%E5%99%A8" target="_blank">浏览器</a>中，不需要额外安装支持软件 &#8211;在本地运行时，受安全沙箱全程保护。</p>
<p>2、Silverlight中的ABC</p>
<p>　　&#8226;&lt;endpoint address="" binding="basicHttpBinding" contract="WcfService.IServiceCustomer"&gt;</p>
<p>　　&#8226;A address&nbsp; 访问地址 </p>
<p>　　&#8226;B basicHttpBinding 绑定协议(目前就支持这一种)&#8226;C contract 契约</p>
<p>3、常用控件使用</p>
<p>　　&#8226;<a href="http://www.cnblogs.com/Kinglee/category/201323.html" target="_blank">Silverlight</a><a href="http://www.cnblogs.com/Kinglee/category/201323.html" target="_blank">控件应用开发</a></p>
<p>4、契约</p>
<p>　　服务契约 ServiceContract<br />　　操作契约 OperationContract</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('b3bb9f60-94f6-4f28-8a4a-fda6de30e83e')"><img id="code_img_closed_b3bb9f60-94f6-4f28-8a4a-fda6de30e83e" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"  alt="" /><img style="display: none" id="code_img_opened_b3bb9f60-94f6-4f28-8a4a-fda6de30e83e" class="code_img_opened" onclick="cnblogs_code_hide('b3bb9f60-94f6-4f28-8a4a-fda6de30e83e',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"><span class="cnblogs_code_collapse">代码</span> 
<div id="cnblogs_code_open_b3bb9f60-94f6-4f28-8a4a-fda6de30e83e" class="cnblogs_code_hide"><pre><div><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000"><br /> [ServiceContract]<br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> IServiceCustomer<br />    {<br />        [OperationContract]<br />       Domain.Server. Customer GetCustomer(SysUser user, </span><span style="color: #0000ff">int</span><span style="color: #000000"> customerId);<br />        [OperationContract]<br />        IList</span><span style="color: #000000">&lt;</span><span style="color: #000000">Domain.Server.Customer</span><span style="color: #000000">&gt;</span><span style="color: #000000"> GetAll(SysUser user);<br />        [OperationContract]<br />        </span><span style="color: #0000ff">void</span><span style="color: #000000"> Add(SysUser user,Domain.Server.Customer customer);<br />        [OperationContract]<br />        </span><span style="color: #0000ff">string</span><span style="color: #000000"> SayHello(SysUser sysUser);<br />    }<br /></span></div></pre></div></div>
<p>&nbsp;</p>
<p>　　&#8226;数据契约 DataContract </p>
<p>　　&#8226;成员契约 DataMember</p>
<p>&nbsp;</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('9b023f1b-f97a-4d82-8bd2-7390c224287e')"><img id="code_img_closed_9b023f1b-f97a-4d82-8bd2-7390c224287e" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"  alt="" /><img style="display: none" id="code_img_opened_9b023f1b-f97a-4d82-8bd2-7390c224287e" class="code_img_opened" onclick="cnblogs_code_hide('9b023f1b-f97a-4d82-8bd2-7390c224287e',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"><span class="cnblogs_code_collapse">代码</span> 
<div id="cnblogs_code_open_9b023f1b-f97a-4d82-8bd2-7390c224287e" class="cnblogs_code_hide"><pre><div><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">[DataContract]<br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Customer<br />    {<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> _intCustomerId;<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">string</span><span style="color: #000000"> _strCustomerName;<br />        [DataMember]<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">virtual</span><span style="color: #000000">  </span><span style="color: #0000ff">int</span><span style="color: #000000"> CustomerId<br />        {<br />            </span><span style="color: #0000ff">get</span><span style="color: #000000"> { </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">._intCustomerId; }<br />            </span><span style="color: #0000ff">set</span><span style="color: #000000"> { </span><span style="color: #0000ff">this</span><span style="color: #000000">._intCustomerId </span><span style="color: #000000">=</span><span style="color: #000000"> value; }<br />        }<br />        [DataMember]<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">virtual</span><span style="color: #000000"> </span><span style="color: #0000ff">string</span><span style="color: #000000"> CustomerName<br />        {<br />            </span><span style="color: #0000ff">get</span><span style="color: #000000"> { </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">._strCustomerName; }<br />            </span><span style="color: #0000ff">set</span><span style="color: #000000"> { </span><span style="color: #0000ff">this</span><span style="color: #000000">._strCustomerName </span><span style="color: #000000">=</span><span style="color: #000000"> value; }<br />        }<br />}</span></div></pre></div></div>
<p>&nbsp;</p>
<p>5、序列化</p>
<p>　　&#8226;序列化的目的就是把一种私有的或者某种平台下使用的数据类型转化为标准的可以公开交互的数据信息样式。这个过程就叫序列化。序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化，它将流转换为对象。 </p>
<p>　　&#8226; 序列化就是把本地消息或者数据的类型进行封送，转换为标准的可以跨平台、语言的信息集，为别的系统或者服务所用。</p>
<p>6、Silverlight 应用程序中XAP文件</p>
<p>　　&#8226;XAP文件是Silverlight 应用程序编译打包后的一个文件，它是一个标准的zip压缩文件，包括了Silverlight 应用程序所需的一切文件，如程序集、资源文件等。 </p>
<p>　　&#8226;客户端访问sl网站之后会下载到客户端 </p>
<p>　　&#8226;可以动态加载 </p>
<p>　　&#8226;体积优化 </p>
<p>　　&#8226;Assembly Caching</p>
<p>7、Silverlight中的离线存储</p>
<p>　　&#8226;离线存储 Isolated Storage</p>
<p>　　&#8226;<a href="http://blogs.msdn.com/jijia/archive/2009/03/25/silverlight-3-offline-mode.aspx" target="_blank">关于 </a><a href="http://blogs.msdn.com/jijia/archive/2009/03/25/silverlight-3-offline-mode.aspx" target="_blank">Silverlight3 </a><a href="http://blogs.msdn.com/jijia/archive/2009/03/25/silverlight-3-offline-mode.aspx" target="_blank">的离线模式</a> </p>
<p>　　&#8226;高级编程 chapter18</p>
<p>　　&#8226;<a href="http://space.itpub.net/12184684/viewspace-366344" target="_blank">详解</a><a href="http://space.itpub.net/12184684/viewspace-366344" target="_blank">Silverlight 2</a><a href="http://space.itpub.net/12184684/viewspace-366344" target="_blank">中的独立存储（</a><a href="http://space.itpub.net/12184684/viewspace-366344" target="_blank">Isolated Storage</a><a href="http://space.itpub.net/12184684/viewspace-366344" target="_blank">）</a></p>
<p>　　&#8226;独立存储（Isolated Storage）是Silverlight 2中提供的一个客户端安全的存储，它是一个与Cookie机制类似的局部信任机制。独立存储机制的APIs 提供了一个虚拟的文件系统和可以访问这个虚拟文件系统的数据流对象。Silverlight中的独立存储是基于 .NET Framework中的独立存储来建立的，所以它仅仅是.NET Framework中独立存储的一个子集。 </p>
<p>　　&#8226;Silverlight中的独立存储有以下一些特征: &#8211;每个基于Silverlight的应用程序都被分配了属于它自己的一部分存储空间, 但是应用程序中的程序集却是在存储空间中共享的。一个应用程序被服务器赋给了一个唯一的固定的标识值。基于Silverlight的应用程序的虚拟文件系统现在就以一个标识值的方式来访问了。这个标识值必须是一个常量，这样每次应用程序运行时才可以找到这个共享的位置。&nbsp;&nbsp; &#8211;独立存储的APIs 其实和其它的文件操作APIs类似，比如 File 和 Directory 这些用来访问和维护文件或文件夹的类。 它们都是基于FileStream APIs 来维护文件的内容的。 &#8211;独立存储严格的限制了应用程序可以存储的数据的大小，目前的上限是每个应用程序为1 MB。 &#8211;在SL3中增大为25MB</p>
<p>8、SL3的独立存储</p>
<p>　　&#8226;Silverlight 3 提供了强大的离线模式，通过离线模式，你可以获得如下益处：</p>
<p>　　&#8226;增加用户访问应用的粘度 <br />通过提供离线的模式，增加用户对应用的粘。</p>
<p>　　&#8226;提供离线体验 <br />可以提供无需网络的应用体验。</p>
<p>　　&#8226;运行于安全沙箱 <br />通过沙箱机制，提供更加可靠的安全浏览体验。</p>
<p>　　&#8226;不需要管理员权限 更加灵活的安装。 </p>
<p>　　&#8226;独立存储空间(Isolated Storage)更大 </p>
<p>提供 25M 的默认独立存储空间。 </p>
<p>　　&#8226;网络状态支持 <br />提供对网络状态变化的事件响应支持。 </p>
<p>　　&#8226;自动升级 <br />自动检测服务器应用的更新状态，即时更新应用。 在线、离线状态定制 <br />可根据在线、离线状态调用不同 UI</p>
<p>9、数据绑定</p>
<p>　　&#8226;绑定一个对象 </p>
<p>　　&#8226;2、双向绑定 </p>
<p>　　&#8226;3、绑定服务 </p>
<p>　　&#8226;4、绑定集合 &#8211;ItemsSource &#8211;DisplayMemberPath &#8211;ItemTemplate &#8211;ItemsPanel </p>
<p>　　&#8226;5、数据格式转换 </p>
<p>　　&#8226;Silverlight3高级编程 Chapter 16</p>
<p>10、数据验证</p>
<p>　　&#8226;ValidatesOnException </p>
<p>　　&#8226;2、NotifyOnValidationError </p>
<p>　　&#8226;3、Validation Class 验证类 </p>
<p>　　&#8226;4、Input Validation输入验证 </p>
<p>　　&#8226;Silverlight3高级编程 P548-P553</p>
<p>　　&#8226;<a href="http://www.cnblogs.com/Terrylee/archive/2008/07/29/binding-data-validation-in-silverlight.html" target="_blank">技巧：在</a><a href="http://www.cnblogs.com/Terrylee/archive/2008/07/29/binding-data-validation-in-silverlight.html" target="_blank">Silverlight</a><a href="http://www.cnblogs.com/Terrylee/archive/2008/07/29/binding-data-validation-in-silverlight.html" target="_blank">应用程序中进行数据验证</a> <a href="http://www.cnblogs.com/virusswb/archive/2010/01/28/1658710.html" target="_blank">Silverlight3</a><a href="http://www.cnblogs.com/virusswb/archive/2010/01/28/1658710.html" target="_blank">系列（六）数据验证 </a><a href="http://www.cnblogs.com/virusswb/archive/2010/01/28/1658710.html" target="_blank">Data Validation</a></p>
<p>11、数据库的三种交互方式比较</p>
<p><img src="http://pic002.cnblogs.com/img/virusswb/201002/2010020910332164.jpg"  alt="" /><br />12、知识点：版本</p>
<p>　　&#8226;RTM版是最终压盘版，Release To Manufacturing，也就是交付给光盘制作厂商，这和最终发布版一样。发布RTM后，厂商若要修改就只有通过发布SP来完成了。</p>
<p>　　&#8226;RC版是发布候选版，Release Candidate，一般是RTM版本前的几个预览版，但是这个阶段来说基本功能已经完成，主要是用来捉bug了，所以发布RC后，基本功能不会有大的变化了，只要各种测试能够通过，这也表明最终发布不远了。</p>
<p>　　&#8226;CTP是社群技术预览版，Community Technology Preview，这个版本只是用来在社区内发布，验证市场情况和用户认可度，早于RC版，就像Atlas，在发布了多个CTP后，突然剑峰一转，变为了ASP.NET AJAX，所以说CTP版本不一定可靠，可能在功能上都会有大的变化。</p>
<p>13、整体架构</p>
<p><img src="http://pic002.cnblogs.com/img/virusswb/201002/2010020910351526.jpg"  alt="" /></p>
<p>14、好处</p>
<p>　　&#8226;可以分层开发，不用每个人从底层写到上层，集中精力，精益求精，方便后期优化</p>
<p>　　&#8226;中间层可插拔，中间层可以优化，可扩展性 </p>
<p>　　&#8226;ORM</p>
<p>　　&#8226;增加可测试性</p>
<p>15、WCF</p>
<p>　　&#8226;WCF全称Windows Communication Foundation，是Microsoft为构建面向服务的应用提供的分布式通信编程框架，是.NET Framework 3.5的重要组成部分。 </p>
<p>　　&#8226;WCF是微软分布式应用程序开发的集大成者，它整合了.Net平台下所有的和分布式系统有关的技术，如Enterprise Sevices(COM+)、.Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。以通信(Communiation)范围而论，它可以跨进程、跨机器、跨子网、企业网乃至于 Internet；以宿主程序而论，可以以ASP.NET，EXE，WPF，Windows Forms，NT Service，COM+作为宿主(Host)。WCF可以支持的协议包括TCP，HTTP，跨进程以及自定义，安全模式则包括SAML， Kerberos，X509，用户/密码，自定义等多种标准与模式。</p>
<p>16、WCF身份验证机制</p>
<p><img src="http://pic002.cnblogs.com/img/virusswb/201002/2010020910372433.jpg"  alt="" /></p>
<p>17、WCF Transfer的安全模式</p>
<p><img src="http://pic002.cnblogs.com/img/virusswb/201002/2010020910382652.jpg"  alt="" /></p>
<p>18、WCF安全模式与绑定协议</p>
<table style="width: 864px" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="274"></col>
<col></col>
<col width="120"></col>
<col></col>
<col width="128"></col>
<col></col>
<col width="158"></col>
<col></col>
<col width="113"></col>
<col></col>
<col width="72"></col>
<col></col></colgroup>
<tbody>
<tr style="background-color: #c1bfb8; height: 39px" valign="middle" align="center">
<td class="oa1" height="39" width="274">
<p>绑定/安全模式 </p></td>
<td class="oa1" width="120">
<p>None </p></td>
<td class="oa1" width="128">
<p>Transport </p></td>
<td class="oa1" width="158">
<p>Message </p></td>
<td class="oa1" width="113">
<p>Mixed </p></td>
<td class="oa1" width="72">
<p>Both </p></td></tr>
<tr height="39">
<td class="oa2" height="39" width="274">
<p>BasicHttpBinding </p></td>
<td class="oa2" width="120">
<p>Yes(default) </p></td>
<td class="oa2" width="128">
<p>Yes </p></td>
<td class="oa2" width="158">
<p>Yes </p></td>
<td class="oa2" width="113">
<p>Yes </p></td>
<td class="oa2" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetTcpBinding </p></td>
<td class="oa3" width="120">
<p>Yes </p></td>
<td class="oa3" width="128">
<p>Yes(default) </p></td>
<td class="oa3" width="158">
<p>Yes </p></td>
<td class="oa3" width="113">
<p>Yes </p></td>
<td class="oa3" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>NetPeerTcpBinding </p></td>
<td class="oa4" width="120">
<p>Yes </p></td>
<td class="oa4" width="128">
<p>Yes(default) </p></td>
<td class="oa4" width="158">
<p>Yes </p></td>
<td class="oa4" width="113">
<p>Yes </p></td>
<td class="oa4" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetNamedPipeBinding </p></td>
<td class="oa3" width="120">
<p>Yes </p></td>
<td class="oa3" width="128">
<p>Yes(default) </p></td>
<td class="oa3" width="158">
<p>No </p></td>
<td class="oa3" width="113">
<p>No </p></td>
<td class="oa3" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>WSHttpBinding </p></td>
<td class="oa4" width="120">
<p>Yes </p></td>
<td class="oa4" width="128">
<p>Yes </p></td>
<td class="oa4" width="158">
<p>Yes(default) </p></td>
<td class="oa4" width="113">
<p>Yes </p></td>
<td class="oa4" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>WSFederationHttpBinding </p></td>
<td class="oa3" width="120">
<p>Yes </p></td>
<td class="oa3" width="128">
<p>No </p></td>
<td class="oa3" width="158">
<p>Yes(default) </p></td>
<td class="oa3" width="113">
<p>Yes </p></td>
<td class="oa3" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>WSDualHttpBinding </p></td>
<td class="oa4" width="120">
<p>Yes </p></td>
<td class="oa4" width="128">
<p>No </p></td>
<td class="oa4" width="158">
<p>Yes(default) </p></td>
<td class="oa4" width="113">
<p>No </p></td>
<td class="oa4" width="72">
<p>No </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetMsmqBinding </p></td>
<td class="oa3" width="120">
<p>yes </p></td>
<td class="oa3" width="128">
<p>Yes(default) </p></td>
<td class="oa3" width="158">
<p>Yes </p></td>
<td class="oa3" width="113">
<p>No </p></td>
<td class="oa3" width="72">
<p>Yes </p></td></tr></tbody></table>
<p>Silverlight和WCF通信的绑定协议目前只支持BasicHttpBinding </p>
<p>19、Transport安全模式与客户端凭据</p>
<table style="width: 860px" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="298"></col>
<col></col>
<col width="130"></col>
<col></col>
<col width="138"></col>
<col></col>
<col width="171"></col>
<col></col>
<col width="122"></col>
<col></col></colgroup>
<tbody>
<tr height="39">
<td class="oa1" height="39" width="298">
<p>绑定/安全模式 </p></td>
<td class="oa1" width="130">
<p>None </p></td>
<td class="oa1" width="138">
<p>Windows </p></td>
<td class="oa1" width="171">
<p>Username </p></td>
<td class="oa1" width="122">
<p>Certificate </p></td></tr>
<tr height="39">
<td class="oa2" height="39" width="298">
<p>BasicHttpBinding </p></td>
<td class="oa2" width="130">
<p>Yes(default) </p></td>
<td class="oa2" width="138">
<p>Yes </p></td>
<td class="oa2" width="171">
<p>Yes </p></td>
<td class="oa2" width="122">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="298">
<p>NetTcpBinding </p></td>
<td class="oa3" width="130">
<p>Yes </p></td>
<td class="oa3" width="138">
<p>Yes(default) </p></td>
<td class="oa3" width="171">
<p>No </p></td>
<td class="oa3" width="122">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="298">
<p>NetPeerTcpBinding </p></td>
<td class="oa4" width="130">
<p>No </p></td>
<td class="oa4" width="138">
<p>No </p></td>
<td class="oa4" width="171">
<p>Yes(default) </p></td>
<td class="oa4" width="122">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="298">
<p>NetNamedPipeBinding </p></td>
<td class="oa3" width="130">
<p>No </p></td>
<td class="oa3" width="138">
<p>Yes(default) </p></td>
<td class="oa3" width="171">
<p>No </p></td>
<td class="oa3" width="122">
<p>No </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="298">
<p>WSHttpBinding </p></td>
<td class="oa4" width="130">
<p>Yes </p></td>
<td class="oa4" width="138">
<p>Yes(default) </p></td>
<td class="oa4" width="171">
<p>Yes </p></td>
<td class="oa4" width="122">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="298">
<p>WSFederationHttpBinding </p></td>
<td class="oa3" width="130">
<p>N/A </p></td>
<td class="oa3" width="138">
<p>N/A </p></td>
<td class="oa3" width="171">
<p>N/a</p></td>
<td class="oa3" width="122">
<p>N/A </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="298">
<p>WSDualHttpBinding </p></td>
<td class="oa4" width="130">
<p>N/A </p></td>
<td class="oa4" width="138">
<p>N/A </p></td>
<td class="oa4" width="171">
<p>N/A </p></td>
<td class="oa4" width="122">
<p>N/A </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="298">
<p>NetMsmqBinding </p></td>
<td class="oa3" width="130">
<p>Yes </p></td>
<td class="oa3" width="138">
<p>Yes(default) </p></td>
<td class="oa3" width="171">
<p>No </p></td>
<td class="oa3" width="122">
<p>Yes </p></td></tr></tbody></table>
<p>20、消息安全模式与客户端凭据</p>
<table style="width: 864px" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="274"></col>
<col></col>
<col width="83"></col>
<col></col>
<col width="150"></col>
<col></col>
<col width="128"></col>
<col></col>
<col width="120"></col>
<col></col>
<col width="109"></col>
<col></col></colgroup>
<tbody>
<tr height="39">
<td class="oa1" height="39" width="274">
<p>绑定/安全模式 </p></td>
<td class="oa1" width="83">
<p>None </p></td>
<td class="oa1" width="150">
<p>Windows </p></td>
<td class="oa1" width="128">
<p>Username </p></td>
<td class="oa1" width="120">
<p>Certificate </p></td>
<td class="oa1" width="109">
<p>Issued token </p></td></tr>
<tr height="39">
<td class="oa2" height="39" width="274">
<p>BasicHttpBinding </p></td>
<td class="oa2" width="83">
<p>No </p></td>
<td class="oa2" width="150">
<p>No </p></td>
<td class="oa2" width="128">
<p>Yes </p></td>
<td class="oa2" width="120">
<p>Yes </p></td>
<td class="oa2" width="109">
<p>No </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetTcpBinding </p></td>
<td class="oa3" width="83">
<p>Yes </p></td>
<td class="oa3" width="150">
<p>Yes(default) </p></td>
<td class="oa3" width="128">
<p>Yes </p></td>
<td class="oa3" width="120">
<p>Yes </p></td>
<td class="oa3" width="109">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>NetPeerTcpBinding </p></td>
<td class="oa4" width="83">
<p>N/A </p></td>
<td class="oa4" width="150">
<p>N/A </p></td>
<td class="oa4" width="128">
<p>N/A</p></td>
<td class="oa4" width="120">
<p>N/A </p></td>
<td class="oa4" width="109">
<p>N/A </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetNamedPipeBinding </p></td>
<td class="oa3" width="83">
<p>N/A </p></td>
<td class="oa3" width="150">
<p>N/A </p></td>
<td class="oa3" width="128">
<p>N/A </p></td>
<td class="oa3" width="120">
<p>N/A </p></td>
<td class="oa3" width="109">
<p>N/A </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>WSHttpBinding </p></td>
<td class="oa4" width="83">
<p>Yes </p></td>
<td class="oa4" width="150">
<p>Yes(default) </p></td>
<td class="oa4" width="128">
<p>Yes </p></td>
<td class="oa4" width="120">
<p>Yes </p></td>
<td class="oa4" width="109">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>WSFederationHttpBinding </p></td>
<td class="oa3" width="83">
<p>N/A </p></td>
<td class="oa3" width="150">
<p>N/A </p></td>
<td class="oa3" width="128">
<p>N/A </p></td>
<td class="oa3" width="120">
<p>N/A </p></td>
<td class="oa3" width="109">
<p>N/A </p></td></tr>
<tr height="39">
<td class="oa4" height="39" width="274">
<p>WSDualHttpBinding </p></td>
<td class="oa4" width="83">
<p>Yes </p></td>
<td class="oa4" width="150">
<p>Yes(default) </p></td>
<td class="oa4" width="128">
<p>Yes </p></td>
<td class="oa4" width="120">
<p>Yes </p></td>
<td class="oa4" width="109">
<p>Yes </p></td></tr>
<tr height="39">
<td class="oa3" height="39" width="274">
<p>NetMsmqBinding </p></td>
<td class="oa3" width="83">
<p>yes </p></td>
<td class="oa3" width="150">
<p>Yes(default) </p></td>
<td class="oa3" width="128">
<p>Yes </p></td>
<td class="oa3" width="120">
<p>Yes </p></td>
<td class="oa3" width="109">
<p>Yes </p></td></tr></tbody></table>
<p>21、安全</p>
<p>　　&#8226;传输安全 https &lt;security mode="Transport"&gt;</p>
<p>　　&#8226;消息安全 username/pw-combination </p>
<p>　　　　&#8211;No authentication.</p>
<p>　　　　&#8211;Authentication through method parameters</p>
<p>　　　　&#8211;Authentication through message headers</p>
<p>　　　　&#8211;Authentication through message headers by implementing an operation behavior. Every method decorated with this attribute will automatically perform username/pw authentication.</p>
<p>22、Web.config中的WCF安全配置</p>
<p style="padding-left: 30px">&#8226; &lt;bindings &gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;basicHttpBinding &gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;binding&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;security mode="TransportCredentialOnly"&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;transport clientCredentialType="None"/&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;message clientCredentialType="UserName"/&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/security&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/binding&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/basicHttpBinding&gt;</p>
<p style="padding-left: 30px">&#8226;&nbsp;&nbsp;&nbsp; &lt;/bindings&gt;</p>
<p>23、开发分工</p>
<p>　　&#8226;横向分层发开</p>
<p>24、有用的连接</p>
<p>　　&#8226;<a href="http://www.silverlightchina.net/html/tips/2009/1203/276.html" target="_blank">Silverlight</a><a href="http://www.silverlightchina.net/html/tips/2009/1203/276.html" target="_blank">客户端和</a><a href="http://www.silverlightchina.net/html/tips/2009/1203/276.html" target="_blank">WCF</a><a href="http://www.silverlightchina.net/html/tips/2009/1203/276.html" target="_blank">服务器端共享类</a><a href="http://www.silverlightchina.net/html/tips/2009/1203/276.html" target="_blank">库</a> </p>
<p>　　&#8226;<a href="http://blog.csdn.net/zjfei/archive/2009/07/27/4384428.aspx" target="_blank">Silverlight 3 - </a><a href="http://blog.csdn.net/zjfei/archive/2009/07/27/4384428.aspx" target="_blank">MultiThreading</a><a href="http://blog.csdn.net/zjfei/archive/2009/07/27/4384428.aspx" target="_blank">编程</a> </p>
<p>　　&#8226;Silverlight 3 高级编程 Chapter 19 MultiThreading</p>
<p>&nbsp;</p>
<p>下面是原文的PPT下载：<a title="Silverlight数据通信.pptx" href="http://files.cnblogs.com/virusswb/Silverlight数据通信.pptx" target="_blank">Silverlight数据通信.pptx</a></p>
<p>&nbsp;</p><img src="http://www.cnblogs.com/virusswb/aggbug/1666282.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/virusswb/archive/2010/02/09/1666282.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/virusswb/archive/2010/02/09/1666282.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>如何在基于 Silverlight 的本地应用程序之间实现通信</title><link>http://www.cnblogs.com/virusswb/articles/1664394.html</link><dc:creator>virus</dc:creator><author>virus</author><pubDate>Fri, 05 Feb 2010 06:24:00 GMT</pubDate><guid>http://www.cnblogs.com/virusswb/articles/1664394.html</guid><description><![CDATA[<p>阅读: 15 评论: 0 作者: <a href="http://www.cnblogs.com/virusswb/" target="_blank">virus</a> 发表于 2010-02-05 14:24 <a href="http://www.cnblogs.com/virusswb/articles/1664394.html" target="_blank">原文链接</a></p><div class="title"><a href="http://msdn.microsoft.com/zh-cn/library/dd833075(VS.95).aspx">http://msdn.microsoft.com/zh-cn/library/dd833075(VS.95).aspx</a></div>
<div class="title"></div>
<div class="title"><a href="http://daizhj.blog.51cto.com/285189/124340">在两个Silverlight应用间数据通信(包括与Flash通信)</a></div>
<div class="title"></div>
<div class="title">如何在基于 Silverlight 的本地应用程序之间实现通信<!----></div>
<!--Content type: Devdiv1. Transform: orcas2mtps.xslt.-->
<div id="mainSection">
<div id="mainBody">
<p><!----></p>
<div class="introduction">
<p>下面的代码示例演示如何使用 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.messaging.localmessagesender(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl01',this);" id="ctl00_MTCS_main_ctl01">LocalMessageSender</a></span> 和 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.messaging.localmessagereceiver(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl02',this);" id="ctl00_MTCS_main_ctl02">LocalMessageReceiver</a></span> 类。</p>
<p>在 XAML 中，<span class="code">Receiver</span> 类定义 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.controls.textblock(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl03',this);" id="ctl00_MTCS_main_ctl03">TextBlock</a></span> 以便显示它接收的消息。<span class="code">Sender</span> 类定义 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.controls.button(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl04',this);" id="ctl00_MTCS_main_ctl04">Button</a></span> 以便发送消息，并且定义 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.controls.textblock(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl05',this);" id="ctl00_MTCS_main_ctl05">TextBlock</a></span> 以便显示它接收的响应。</p>
<p>在代码隐藏中，<span class="code">Receiver</span> 类初始化 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.messaging.localmessagereceiver(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl06',this);" id="ctl00_MTCS_main_ctl06">LocalMessageReceiver</a></span> 并处理 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.messaging.localmessagereceiver.messagereceived(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl07',this);" id="ctl00_MTCS_main_ctl07">MessageReceived</a></span> 事件。<span class="code">Sender</span> 类初始化 <span><a href="http://msdn.microsoft.com/zh-cn/library/system.windows.messaging.localmessagesender(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl08',this);" id="ctl00_MTCS_main_ctl08">LocalMessageSender</a></span> 并为发送消息提供自定义处理。这使得发送器可以反复发送消息，直到接收器响应。这在某些情况下很有用，例如在接收应用程序的加载时间较长时。</p>
<p>发送器将尝试次数随消息一起传递到 <span><a href="http://msdn.microsoft.com/zh-cn/library/dd459574(VS.95).aspx" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl09',this);" id="ctl00_MTCS_main_ctl09">SendAsync(String, Object)</a></span> 方法调用。在接收器最终响应时，发送器将该尝试次数与响应一起显示。</p>
<p>该 HTML 示例承载发送应用程序的两个副本和接收应用程序的一个副本。这说明接收器可以接收来自多个发送器的消息。</p>
<p><span><span id="ctl00_MTCS_main_ctl33_ctl00_ctl06">&nbsp;</span></span></p>
<span><span>
<pre class="brush:csharp"><div onclick="cnblogs_code_show('c3a0e982-ee56-4b73-94d4-8c4bd69ce399')" class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_c3a0e982-ee56-4b73-94d4-8c4bd69ce399" /><img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('c3a0e982-ee56-4b73-94d4-8c4bd69ce399',event)" class="code_img_opened" id="code_img_opened_c3a0e982-ee56-4b73-94d4-8c4bd69ce399" style="display: none;" /><span class="cnblogs_code_collapse">代码</span><div class="cnblogs_code_hide" id="cnblogs_code_open_c3a0e982-ee56-4b73-94d4-8c4bd69ce399"><pre><div><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Windows;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Windows.Controls;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Windows.Messaging;<br /><br /></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> SendingApplication<br />{<br />    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Sender : UserControl<br />    {<br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> LocalMessageSender messageSender;<br /><br />        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Sender()<br />        {<br />            InitializeComponent();<br />            UpdateButton();<br />            messageSender </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> LocalMessageSender(<br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">receiver</span><span style="color: #800000;">"</span><span style="color: #000000;">, LocalMessageSender.Global);<br />            messageSender.SendCompleted </span><span style="color: #000000;">+=</span><span style="color: #000000;"> sender_SendCompleted;<br />            SendMessage(</span><span style="color: #800000;">"</span><span style="color: #800000;">message from Sender constructor</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> clickNumber </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> UpdateButton()<br />        {<br />            button.Content </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">send message 'click </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> clickNumber </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">'</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Button_Click(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, RoutedEventArgs e)<br />        {<br />            SendMessage(</span><span style="color: #800000;">"</span><span style="color: #800000;">click </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> clickNumber);<br />            clickNumber</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />            UpdateButton();<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> MAX_ATTEMPTS </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">10000</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> attempt </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> SendMessage(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> message)<br />        {<br />            messageSender.SendAsync(message, attempt);<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> sender_SendCompleted(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, SendCompletedEventArgs e)<br />        {<br />            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (e.Error </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />            {<br />                LogError(e);<br />                attempt</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (attempt </span><span style="color: #000000;">&gt;</span><span style="color: #000000;"> MAX_ATTEMPTS)<br />                {<br />                    output.Text </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Could not send message.</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />                    </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br />                }<br />                SendMessage(e.Message);<br />                </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br />            }<br /><br />            output.Text </span><span style="color: #000000;">=</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Message: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.Message </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Attempt </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)e.UserState </span><span style="color: #000000;">+</span><span style="color: #000000;"> <br />                </span><span style="color: #800000;">"</span><span style="color: #800000;"> completed.</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Response: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.Response </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">ReceiverName: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.ReceiverName </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"> <br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">ReceiverDomain: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.ReceiverDomain;<br /><br />            </span><span style="color: #008000;">//</span><span style="color: #008000;"> Reset attempt counter.</span><span style="color: #008000;"><br /></span><span style="color: #000000;">            attempt </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">;<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> LogError(SendCompletedEventArgs e)<br />        {<br />            System.Diagnostics.Debug.WriteLine(<br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Attempt number {0}: {1}: {2}</span><span style="color: #800000;">"</span><span style="color: #000000;">, (</span><span style="color: #0000ff;">int</span><span style="color: #000000;">)e.UserState, <br />                e.Error.GetType().ToString(), e.Error.Message);<br />        }<br /><br />    }<br />}</span></div></pre>
</div>
</div>
<p>&nbsp;</p>
</pre>
</span></span></div>
<div class="introduction"><span><span>&nbsp;</span></span></div>
<div class="introduction"><span><span>
<div onclick="cnblogs_code_show('a2b7d362-6de5-44b2-8426-60cf1295d69c')" class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_a2b7d362-6de5-44b2-8426-60cf1295d69c" /><img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('a2b7d362-6de5-44b2-8426-60cf1295d69c',event)" class="code_img_opened" id="code_img_opened_a2b7d362-6de5-44b2-8426-60cf1295d69c" style="display: none;" /><span class="cnblogs_code_collapse">代码</span>
<div class="cnblogs_code_hide" id="cnblogs_code_open_a2b7d362-6de5-44b2-8426-60cf1295d69c">
<pre><div><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Windows.Controls;<br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Windows.Messaging;<br /><br /></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> ReceivingApplication<br />{<br />    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Receiver : UserControl<br />    {<br />        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Receiver()<br />        {<br />            InitializeComponent();<br /><br />            LocalMessageReceiver messageReceiver </span><span style="color: #000000;">=</span><span style="color: #000000;"><br />                </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> LocalMessageReceiver(</span><span style="color: #800000;">"</span><span style="color: #800000;">receiver</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />                ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain);<br />            messageReceiver.MessageReceived </span><span style="color: #000000;">+=</span><span style="color: #000000;"> messageReceiver_MessageReceived;<br />            </span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />            {<br />                messageReceiver.Listen();<br />            }<br />            </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (ListenFailedException)<br />            {<br />                output.Text </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">Cannot receive messages.</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                    </span><span style="color: #800000;">"</span><span style="color: #800000;">There is already a receiver with the name 'receiver'.</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />            }<br />        }<br /><br />        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> messageReceiver_MessageReceived(<br />            </span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MessageReceivedEventArgs e)<br />        {<br />            e.Response </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">response to </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.Message;<br />            output.Text </span><span style="color: #000000;">=</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Message: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.Message </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">NameScope: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.NameScope </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">ReceiverName: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.ReceiverName </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">SenderDomain: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.SenderDomain </span><span style="color: #000000;">+</span><span style="color: #000000;"> Environment.NewLine </span><span style="color: #000000;">+</span><span style="color: #000000;"><br />                </span><span style="color: #800000;">"</span><span style="color: #800000;">Response: </span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> e.Response;<br />        }<br />    }<br />}</span></div></pre>
</div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div onclick="cnblogs_code_show('b016d55b-d9e1-4f04-a0f9-a857fdeba5be')" class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_b016d55b-d9e1-4f04-a0f9-a857fdeba5be" /><img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('b016d55b-d9e1-4f04-a0f9-a857fdeba5be',event)" class="code_img_opened" id="code_img_opened_b016d55b-d9e1-4f04-a0f9-a857fdeba5be" style="display: none;" /><span class="cnblogs_code_collapse">代码</span>
<div class="cnblogs_code_hide" id="cnblogs_code_open_b016d55b-d9e1-4f04-a0f9-a857fdeba5be">
<pre><div><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <br />  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html  </span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> saved from url=(0014)about:internet </span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">LocalMessaging</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /><br />  </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">style </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/css"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #800000;"><br />  html, body </span><span style="background-color: #f5f5f5; color: #000000;">{</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    height</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 100%</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    overflow</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> auto</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />  </span><span style="background-color: #f5f5f5; color: #000000;">}</span><span style="background-color: #f5f5f5; color: #800000;"><br />  body </span><span style="background-color: #f5f5f5; color: #000000;">{</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    padding</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    margin</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />  </span><span style="background-color: #f5f5f5; color: #000000;">}</span><span style="background-color: #f5f5f5; color: #800000;"><br />  #silverlightControlHost1 </span><span style="background-color: #f5f5f5; color: #000000;">{</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    padding</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    margin</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />  </span><span style="background-color: #f5f5f5; color: #000000;">}</span><span style="background-color: #f5f5f5; color: #800000;"><br />  #silverlightControlHost2 </span><span style="background-color: #f5f5f5; color: #000000;">{</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    padding</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />    margin</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;"> 0</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />  </span><span style="background-color: #f5f5f5; color: #000000;">}</span><span style="background-color: #f5f5f5; color: #800000;"><br />  </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table </span><span style="color: #ff0000;">border</span><span style="color: #0000ff;">="10"</span><span style="color: #ff0000;"> cellpadding</span><span style="color: #0000ff;">="10"</span><span style="color: #ff0000;"> cellspacing</span><span style="color: #0000ff;">="10"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="silverlightControlHost1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">object </span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="data:application/x-silverlight-2,"</span><span style="color: #ff0000;"> <br />            type</span><span style="color: #0000ff;">="application/x-silverlight-2"</span><span style="color: #ff0000;"> <br />            width</span><span style="color: #0000ff;">="400"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="120"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="source"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="ClientBin/SendingApplication.xap"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="onerror"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="onSilverlightError"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="background"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="white"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">object</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">iframe </span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">='visibility:hidden;height:0;width:0;border:0px'</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">iframe</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="Div1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">object </span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="data:application/x-silverlight-2,"</span><span style="color: #ff0000;"> <br />            type</span><span style="color: #0000ff;">="application/x-silverlight-2"</span><span style="color: #ff0000;"> <br />            width</span><span style="color: #0000ff;">="400"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="120"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="source"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="ClientBin/SendingApplication.xap"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="onerror"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="onSilverlightError"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="background"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="white"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">object</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">iframe </span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">='visibility:hidden;height:0;width:0;border:0px'</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">iframe</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="silverlightControlHost2"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">object </span><span style="color: #ff0000;">data</span><span style="color: #0000ff;">="data:application/x-silverlight-2,"</span><span style="color: #ff0000;"> <br />            type</span><span style="color: #0000ff;">="application/x-silverlight-2"</span><span style="color: #ff0000;"> <br />            width</span><span style="color: #0000ff;">="400"</span><span style="color: #ff0000;"> height</span><span style="color: #0000ff;">="120"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="source"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="ClientBin/ReceivingApplication.xap"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="onerror"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="onSilverlightError"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />            </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="background"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="white"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">object</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">iframe </span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">='visibility:hidden;height:0;width:0;border:0px'</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />          </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">iframe</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />      </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />    </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />  </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></div></pre>
</div>
</div>
<p>&nbsp;</p>
</span></span></div>
</div>
</div><img src="http://www.cnblogs.com/virusswb/aggbug/1664394.html?type=2" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/virusswb/articles/1664394.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/virusswb/articles/1664394.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>“加薪”</title><link>http://www.cnblogs.com/virusswb/archive/2010/02/05/1664324.html</link><dc:creator>virus</dc:creator><author>virus</author><pubDate>Fri, 05 Feb 2010 04:53:00 GMT</pubDate><guid>http://www.cnblogs.com/virusswb/archive/2010/02/05/1664324.html</guid><description><![CDATA[<p>阅读: 782 评论: 10 作者: <a href="http://www.cnblogs.com/virusswb/" target="_blank">virus</a> 发表于 2010-02-05 12:53 <a href="http://www.cnblogs.com/virusswb/archive/2010/02/05/1664324.html" target="_blank">原文链接</a></p><p>　　员工集体上书，表示今年想要公司下发李嘉欣的年历，通过这种方式委婉地要求加薪。老板沉思良久，答应了。几天后，挂历发下来，大家都傻眼了。因为挂历上不是李嘉欣，而是林嘉欣（零加薪）。</p>
<p>　　员工老赵邀请大家喝女儿的满月酒。酒宴上，他宣布女儿跟妈姓，起名毕嘉欣。老板闻之，赠送他一幅满清王爷多尔衮的年画。</p><img src="http://www.cnblogs.com/virusswb/aggbug/1664324.html?type=1" width="1" height="1" alt=""/><p>评论: 10　<a href="http://www.cnblogs.com/virusswb/archive/2010/02/05/1664324.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/virusswb/archive/2010/02/05/1664324.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>wcf使用消息安全之后，客户端的访问顺序，和证书的使用情况</title><link>http://www.cnblogs.com/virusswb/articles/1663511.html</link><dc:creator>virus</dc:creator><author>virus</author><pubDate>Thu, 04 Feb 2010 03:48:00 GMT</pubDate><guid>http://www.cnblogs.com/virusswb/articles/1663511.html</guid><description><![CDATA[<p>阅读: 9 评论: 0 作者: <a href="http://www.cnblogs.com/virusswb/" target="_blank">virus</a> 发表于 2010-02-04 11:48 <a href="http://www.cnblogs.com/virusswb/articles/1663511.html" target="_blank">原文链接</a></p><p>&nbsp;</p>
<p>　　首先记录一个证书颁发机构的网站：<a href="http://www.myssl.cn/prize/index.asp" target="_blank">http://www.myssl.cn/prize/index.asp</a></p>
<p>　　GeoTrust, Inc 是全球第二大数字证书颁发机构，<a class="link" href="http://www.myssl.cn/news/20060517.asp" target="_blank">Verisign的子公司</a>。上海迅通科技有限公司(迅通诚信)作为 GeoTrust 授权中国区合作伙伴 和 RapidSSL.com <a class="link" href="http://www.rapidssl.com/ssl-certificate-international/index.htm" target="_blank">授权中国区合作伙伴</a>，将为中国客户提供本地化的SSL证书(服务器证书)售前和售后服务，并尽量提供详细的安全证书中文文档。我们的服务均以人民币报价(含税价格)，支持各种<a class="link" href="http://www.myssl.cn/guide/pay.asp" target="_blank">付款方式</a>，并可开具国内发票。</p>
<p>　　一、下面是wcf使用<span style="color: red">消息安全</span>之后，需要使用证书，双方的通信过程</p>
<p>　　1、网站购买x509证书，设置网站使用证书</p>
<p>　　2、客户端访问网站</p>
<p>　　3、发现网站使用了证书，验证证书的合法有效性，自动验证，读取证书信息之后去证书的颁发机构验证</p>
<p>　　4、不合法，提示是否信任；如果信任，继续访问，如果不信任就禁止访问。</p>
<p>　　5、合法，就开始协商，协商过程的数据采用非对称加密的公钥、私钥加解密。</p>
<p>　　6、协商的结果就是一个对称加密算法，随即产生</p>
<p>　　7、后面双发通信的消息就用这个随即产生的算法加解密</p>
<p>　　8、程序不用管，加解密是自动完成的，自动用协商的算法完成</p>
<p>　　</p>
<p>　　二、如果使用了传输安全，也就是ssl，https协议，也需要证书，也有协商的过程，和上面的过程类似，都是证书颁发机构来认证证书的合法有效性。</p>
<p>　　三、不提倡同时使用传输安全和消息安全，因为会产生很大的性能问题。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>　　如果有理解不对的地方，还请大家指正。</p>  <img src="http://www.cnblogs.com/virusswb/aggbug/1663511.html?type=2" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/virusswb/articles/1663511.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/virusswb/articles/1663511.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Silverlight3系列（八）数据绑定 Data Binding 3 数据模板 Data Templates</title><link>http://www.cnblogs.com/virusswb/archive/2010/01/29/1659199.html</link><dc:creator>virus</dc:creator><author>virus</author><pubDate>Fri, 29 Jan 2010 06:05:00 GMT</pubDate><guid>http://www.cnblogs.com/virusswb/archive/2010/01/29/1659199.html</guid><description><![CDATA[<p>阅读: 1008 评论: 0 作者: <a href="http://www.cnblogs.com/virusswb/" target="_blank">virus</a> 发表于 2010-01-29 14:05 <a href="http://www.cnblogs.com/virusswb/archive/2010/01/29/1659199.html" target="_blank">原文链接</a></p><p>　　8 数据模板</p>
<p>　　数据模板在xaml标记中是比较重要的，它定义了绑定对象如何显示。一共有两种类型的控件支持数据模板：</p>
<p>　　1）内容控件（具有Content属性的控件）通过ContentTemplate属性支持数据模板。用来显示你放在Content属性中的任何东西。</p>
<p>　　2）列表控件（从ItemsControl中继承而来的控件）通过ItemTemplate属性支持数据绑定。这个模板用来显示集合（你提供给ItemsSource属性的对象集合）中每一个Item。</p>
<p>　　列表模板是以内容模板为基础的，就好像ListBox的ListBoxItem，ComboBox的ComboBoxItem，等等。无论你是用什么ItemTemplate，你每一Item还是可以使用ContentTemplate。</p>
<p>　　&nbsp;&lt;ListBox &gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ListBox.ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ScrollViewer&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TextBlock Text="{Binding Name}"&gt;&lt;/TextBlock&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ScrollViewer&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListBox.ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ListBox&gt;</p>
<p>&nbsp;</p>
<p>　　当你绑定产品集合Products到一个ListBox的时候（通过设置ItemsSource），每一个ListBoxItem都是一个Product对象。ListBoxItem.Content属性设置为一个Product对象，ListBoxItem.ContentTemplate来控制数据的显示，上面是绑定到产品名称Name。</p>
<p>　　</p>
<p>　　8.1 分离重用模板</p>
<p>　　就像样式一样，模板通常是定义在页面或者应用级别，而不是定义在一个list上面。分离通常是比较好的，尤其是你的模板很长，很复杂，或者在一个控件上面使用多个模板。同时你也可以统一你的界面风格，在任何地方都可以使用这个模板。</p>
<p>　　需要这么做的的话，你需要的就是在资源集合Resources Collection中定义并且给它一个唯一的名字。下面定义了一个模板资源</p>
<p>　　</p>
<p>&nbsp;</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('4eee9c94-c562-4a8d-a4a4-0bcc3e96cb28')"><img id="code_img_closed_4eee9c94-c562-4a8d-a4a4-0bcc3e96cb28" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"  alt="" /><img style="display: none" id="code_img_opened_4eee9c94-c562-4a8d-a4a4-0bcc3e96cb28" class="code_img_opened" onclick="cnblogs_code_hide('4eee9c94-c562-4a8d-a4a4-0bcc3e96cb28',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"><span class="cnblogs_code_collapse">代码</span>
<div id="cnblogs_code_open_4eee9c94-c562-4a8d-a4a4-0bcc3e96cb28" class="cnblogs_code_hide">
<div><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">UserControl.Resources&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DataTemplate&nbsp;</span><span style="color: #ff0000">x:Key</span><span style="color: #0000ff">="ProductDataTemplate"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Border&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000">&nbsp;BorderThickness</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">&nbsp;BorderBrush</span><span style="color: #0000ff">="SteelBlue"</span><span style="color: #ff0000">&nbsp;CornerRadius</span><span style="color: #0000ff">="5"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid.RowDefinitions&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid.RowDefinitions</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock&nbsp;</span><span style="color: #ff0000">FontWeight</span><span style="color: #0000ff">="Bold"</span><span style="color: #ff0000">&nbsp;Text</span><span style="color: #0000ff">="</span><span style="color: #808000">{Binding&nbsp;ModelNumber}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock&nbsp;</span><span style="color: #ff0000">FontWeight</span><span style="color: #0000ff">="Bold"</span><span style="color: #ff0000">&nbsp;Grid.Row</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">&nbsp;Text</span><span style="color: #0000ff">="</span><span style="color: #808000">{Binding&nbsp;ModelName}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Border</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DataTemplate</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">UserControl.Resources</span><span style="color: #0000ff">&gt;</span></div></div></div>
<p>&nbsp;</p>
<p>　　下面是使用方法</p>
<p>　　&nbsp;&lt;ListBox Name="lstProducts" x:Name="lstProducts" HorizontalAlignment="Center"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemTemplate="{StaticResource ProductDataTemplate}"&gt;&lt;/ListBox&gt;</p>
<p>　　Data templates不需要数据绑定，换句话说，你不需要ItemsSource属性来绑定数据到ListBox，你可以自己调用ListBox.Items.Add（）方法。</p>
<p>　　</p>
<p>　　8.2 高级绑定</p>
<p>　　当你使用一些基本控件，例如TextBlock，和数据绑定表达式expression的时候，你可以使用更复杂的控制功能，加事件处理，转换数据类型，和使用动画效果。</p>
<p>　　</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('6e575039-9d1d-491f-9e59-3a6103a2d2d7')"><img id="code_img_closed_6e575039-9d1d-491f-9e59-3a6103a2d2d7" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"  alt="" /><img style="display: none" id="code_img_opened_6e575039-9d1d-491f-9e59-3a6103a2d2d7" class="code_img_opened" onclick="cnblogs_code_hide('6e575039-9d1d-491f-9e59-3a6103a2d2d7',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"><span class="cnblogs_code_collapse">代码</span>
<div id="cnblogs_code_open_6e575039-9d1d-491f-9e59-3a6103a2d2d7" class="cnblogs_code_hide">
<div><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">UserControl.Resources&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">loc:ImagePathConverter&nbsp;</span><span style="color: #ff0000">x:Key</span><span style="color: #0000ff">="ImagePathConverter"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">loc:ImagePathConverter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DataTemplate&nbsp;</span><span style="color: #ff0000">x:Key</span><span style="color: #0000ff">="ProductDataTemplate"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Border&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000">&nbsp;BorderThickness</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">&nbsp;BorderBrush</span><span style="color: #0000ff">="SteelBlue"</span><span style="color: #ff0000">&nbsp;CornerRadius</span><span style="color: #0000ff">="5"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid.RowDefinitions&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">RowDefinition</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid.RowDefinitions</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock&nbsp;</span><span style="color: #ff0000">FontWeight</span><span style="color: #0000ff">="Bold"</span><span style="color: #ff0000">&nbsp;Text</span><span style="color: #0000ff">="</span><span style="color: #808000">{Binding&nbsp;ModelNumber}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock&nbsp;</span><span style="color: #ff0000">FontWeight</span><span style="color: #0000ff">="Bold"</span><span style="color: #ff0000">&nbsp;Grid.Row</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">&nbsp;Text</span><span style="color: #0000ff">="</span><span style="color: #808000">{Binding&nbsp;ModelName}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Image&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000">&nbsp;Grid.Row</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;Grid.Column</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;HorizontalAlignment</span><span style="color: #0000ff">="Left"</span><span style="color: #ff0000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Source</span><span style="color: #0000ff">="</span><span style="color: #808000">{Binding&nbsp;ProductImagePath,&nbsp;Mode=TwoWay,&nbsp;Converter={StaticResource&nbsp;ImagePathConverter}}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">Image</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Border</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DataTemplate</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">UserControl.Resources</span><span style="color: #0000ff">&gt;</span></div></div></div>　　
<p>&nbsp;</p>
<p>　　上面的绑定中实现了数据绑定和类型转换。</p>
<p>　　如果你的模板有错误，你不会收到任何异常，这时候控件不会显示数据，而是会空白。</p>
<p>　　</p>
<p>　　8.3 改变列表项的布局</p>
<p>　　</p>
<div class="cnblogs_code" onclick="cnblogs_code_show('9bc6bdc1-2d94-479f-86bd-5ecb6e70a3d9')"><img id="code_img_closed_9bc6bdc1-2d94-479f-86bd-5ecb6e70a3d9" class="code_img_closed" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"  alt="" /><img style="display: none" id="code_img_opened_9bc6bdc1-2d94-479f-86bd-5ecb6e70a3d9" class="code_img_opened" onclick="cnblogs_code_hide('9bc6bdc1-2d94-479f-86bd-5ecb6e70a3d9',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"><span class="cnblogs_code_collapse">代码</span>
<div id="cnblogs_code_open_9bc6bdc1-2d94-479f-86bd-5ecb6e70a3d9" class="cnblogs_code_hide">
<div><!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">ListBox&nbsp;&nbsp;</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="7,3,7,10"</span><span style="color: #ff0000">&nbsp;Name</span><span style="color: #0000ff">="lstProducts"</span><span style="color: #ff0000">&nbsp;ItemTemplate</span><span style="color: #0000ff">="</span><span style="color: #808000">{StaticResource&nbsp;ProductDataTemplate}</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ListBox.ItemsPanel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ItemsPanelTemplate&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">controlsToolkit:WrapPanel</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">controlsToolkit:WrapPanel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ItemsPanelTemplate</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ListBox.ItemsPanel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ListBox</span><span style="color: #0000ff">&gt;</span></div></div></div>
<p>&nbsp;</p>　　<img src="http://www.cnblogs.com/virusswb/aggbug/1659199.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/virusswb/archive/2010/01/29/1659199.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/virusswb/archive/2010/01/29/1659199.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>