﻿<?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>博客园-Yzl的研究室</title><link>http://www.cnblogs.com/yzlhccdec/</link><description>一切都是幻觉</description><language>zh-cn</language><lastBuildDate>Thu, 28 Aug 2008 01:53:13 GMT</lastBuildDate><pubDate>Thu, 28 Aug 2008 01:53:13 GMT</pubDate><ttl>60</ttl><item><title>破解SQL Prompt 3.8..</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/06/17/1223475.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Mon, 16 Jun 2008 22:16:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/06/17/1223475.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1223475.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/06/17/1223475.html#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1223475.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1223475.html</trackback:ping><description><![CDATA[<p><font face="Verdana">累了累了，再也不搞了，按惯例1天后删除.<br />
效果如下<br />
<img height="480" alt="" src="http://blog.tonxoo.com/yzlhccdec/upload/Crack_2.png" width="323" border="0" /><br />
<u><font style="color: red" color="#000080"><a href="http://www.cnblogs.com/Files/yzlhccdec/Crack%20Red%20Gate.rar"><u><font style="color: red" color="#000080">破解包下载</font></u></a></font></u><a href="http://www.cnblogs.com/Files/yzlhccdec/Crack%20Red%20Gate.rar"><br />
</a>说明附到里面了....</font><font face="Verdana"><br />
<a style="color: red" href="http://blog.tonxoo.com/yzlhccdec/post/36.html">这里是破解过程</a><br />
睡觉去.....<br />
<br />
好像在中文OS下面会出问题，那个知道原因的望指教，小弟第一次用IL反编译工具，不晓得是不是跟OS语言版本有关系</p>
</font>
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1223475.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41927/" target="_blank">[新闻]Internet Explorer 8 Beta 2 发布</a>]]></description></item><item><title>Resharper 4.0出来了</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/06/15/1222268.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Sun, 15 Jun 2008 03:25:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/06/15/1222268.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1222268.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/06/15/1222268.html#Feedback</comments><slash:comments>38</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1222268.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1222268.html</trackback:ping><description><![CDATA[<font face="Verdana">下载地址：<font face="Verdana"><a href="http://download.jetbrains.com/resharper/ReSharperSetup.4.0.msi">http://download.jetbrains.com/resharper/ReSharperSetup.4.0.msi</a></font><br />
算号器下载（花了几个小时把它XXOO了，这是算号器，晚上就删了，请勿用于商业用途哟）（<span style="color: red">已删除<br />
</span>）<br />
我VS 2008 SP1装了之后无法使用Resharper提供的Intellisense，不知道大家有没有这个问题？</font> 
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1222268.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41924/" target="_blank">[新闻]中国软件协会：SAP羞辱国产软件是不正当竞争</a>]]></description></item><item><title>Ajax缓存问题</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/24/1120259.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Mon, 24 Mar 2008 13:09:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/24/1120259.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1120259.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/24/1120259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1120259.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1120259.html</trackback:ping><description><![CDATA[<p>今天把网站部署到服务器上之后，发现了以前在本机调试的时候从来没有出现过的问题：在我明明在Http请求头中强制设定了Cache-Control：no-store，但Ajax请求竟然还会缓存数据。<br />
但是这个问题只出现在IE6上面。后来我发现服务器对动态文件也开启了Gzip，关掉之后问题立刻就解决了。<br />
到Google上一搜，原来是IE6的BUG，残念.......<br />
<font face="Verdana">http://support.microsoft.com/kb/321722<br />
看样子还得老老实实用伟大的随机数大法了。。。</font></p>
  <img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1120259.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41923/" target="_blank">[新闻]福布斯：Facebook网站十大最火爆游戏</a>]]></description></item><item><title>MonoRail和Linq To SQL的兼容性问题</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/21/1116725.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Fri, 21 Mar 2008 08:52:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/21/1116725.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1116725.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/21/1116725.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1116725.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1116725.html</trackback:ping><description><![CDATA[<p>今天无意中发现的一个兼容性问题。如果你使用了Monorail+Linq进行开发，这个问题很值得注意。<br />
我在项目中使用Linq内置的OnXXXChanged/OnXXXChanging进行数据有效性验证，比如</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">partial</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnTopicChanging(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;value)<br />
<img id="Codehighlighter1_51_165_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_51_165_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_51_165_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_51_165_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_51_165_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_51_165_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_51_165_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_51_165_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_51_165_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">value.IsLengthIn(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">100</span><span style="color: #000000">))<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataException(</span><span style="color: #800000">"</span><span style="color: #800000">主题不符合要求，请返回重新填写</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
然后在前台用<font face="Verdana">SmartDispatcherController进行数据绑定，比如<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Post([DataBind(</span><span style="color: #800000">"</span><span style="color: #800000">article</span><span style="color: #800000">"</span><span style="color: #000000">)]ArticleInfo&nbsp;articleInfo)<br />
<img id="Codehighlighter1_63_65_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_63_65_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_63_65_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_63_65_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_63_65_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_63_65_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_63_65_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_63_65_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_63_65_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_63_65_Open_Text"><span style="color: #000000">{}</span></span></div>
<br />
然后我在Globle.ascx.cs中进行未处理异常的捕获<br />
<br />
但奇怪的是，当OnTopicChanging中的异常发出后，Globle.ascx.cs竟然无法捕获。也就是说，如果你直接像我这样绑定数据并处理异常的话，是无法得到想要的结果的。<br />
其实原因很简单，<font face="Verdana">SmartDispatcherController</font>在数据绑定的时候用了一个try catch，然后把绑定过程中发生的所有错误全部截获，并放到了<font face="Verdana">BoundInstanceErrors</font>中去了。<br />
解决方法有两个：1.判断<font face="Verdana">BoundInstanceErrors</font>的Count并做相应处理;2.把<font face="Verdana">OnTopicChanging</font>中的验证移到<font face="Verdana">OnValidate中去....<br />
</font>怨念啊~~~我不知道ASP.NET MVC是否存在类似的问题，有条件的朋友可以测试一下。<br />
<br />
</font>
  <img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1116725.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41922/" target="_blank">[新闻]谷歌允许用户评论搜索结果调整顺序</a>]]></description></item><item><title>WPF性能校调</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114161.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Thu, 20 Mar 2008 01:23:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114161.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1114161.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114161.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1114161.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1114161.html</trackback:ping><description><![CDATA[<span style="color: red">声明：本文写于2007年4月8号，差不多一年前，之后我就没用过WPF了，不知道现在改了多少，麻烦大家自己筛选一下。</span><br />
&nbsp;
<p style="margin-left: 21pt; text-indent: -21pt">一、<strong>Rendering Tier</strong></p>
<p style="margin-left: 39pt; text-indent: -18pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">根据硬件配置的不同，</span>WPF<span style="font-family: 宋体">采用不同的</span>Rendering Tier<span style="font-family: 宋体">做渲染。下列情况请特别注意，因为在这些情况下，即使是处于</span>Rendering Tier 2<span style="font-family: 宋体">的情况下也不会硬件加速。</span>(<span style="font-family: 宋体">不全，其余请查阅</span>SDK)</p>
<p style="margin-left: 39pt; text-indent: 0cm">Bitmap effects, Printed content, Tiled content that uses TileBrush, Layered windows.</p>
<p style="margin-left: 39pt; text-indent: 0cm"><span style="font-family: 宋体">下列情况为</span>Layered window: 1. WindowStyle = none, 2.AllowsTransparency = true, 3.Background = Transparent.</p>
<p style="margin-left: 21pt; text-indent: -21pt">二、<strong><span style="font-family: 宋体">布局和设计</span></strong></p>
<p style="margin-left: 21pt; text-indent: 0cm">1<span style="font-family: 宋体">．尽量多使用</span>Canvas<span style="font-family: 宋体">等简单的布局元素，少使用</span>Grid<span style="font-family: 宋体">或者</span>StackPanel<span style="font-family: 宋体">等复杂的，越复杂性能开销越大。</span></p>
<p style="margin-left: 21pt; text-indent: 0cm">2<span style="font-family: 宋体">．建立逻辑树或者视觉树的时候，遵循</span>Top-Down<span style="font-family: 宋体">的原则。示例代码如下：</span></p>
<table style="width: 98.9%" cellspacing="0" cellpadding="0" width="98%" border="0">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: medium none; padding-left: 4.2pt; background: #efeff7; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: #c8cdde 1pt solid" valign="top">
            <p style="margin: 4.2pt 0cm; text-align: left" align="left"><strong><span style="color: #000066">C#&nbsp;</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top">
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">private void OnBuildTreeTopDown(object sender, RoutedEventArgs e)</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">{</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; TextBlock textBlock = new TextBlock();</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; textBlock.Text = "Default";</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; DockPanel parentPanel = new DockPanel();</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; DockPanel childPanel;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; myCanvas.Children.Add(parentPanel);</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; myCanvas.Children.Add(textBlock);</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 150; i++)</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; {</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBlock = new TextBlock();</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBlock.Text = "Default";</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentPanel.Children.Add(textBlock);</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; childPanel = new DockPanel();</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentPanel.Children.Add(childPanel);</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentPanel = childPanel;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; }</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 21pt; text-indent: -21pt">三、<strong><span style="font-family: 宋体">图像</span></strong></p>
<p style="margin-left: 23.25pt; text-indent: -23.25pt">1．<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">对</span>Image<span style="font-family: 宋体">做动画处理的时候（如调整大小等），可以使用这条语句</span>RenderOptions.SetBitmapScalingMode(MyImage,BitmapScalingMode.LowQuality)<span style="font-family: 宋体">，以改善性能。</span></p>
<p style="margin-left: 23.25pt; text-indent: -23.25pt">2．<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">用</span>TileBrush<span style="font-family: 宋体">的时候，可以</span>CachingHint<span style="font-family: 宋体">。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt">四、<strong><span style="font-family: 宋体">对象行为</span></strong></p>
<p style="margin-left: 21pt; text-indent: 0cm"><strong>1</strong><strong><span style="font-family: 宋体">．</span></strong><span style="font-family: 宋体">访问</span>CLR<span style="font-family: 宋体">对象和</span>CLR<span style="font-family: 宋体">属性的效率会比访问</span>DependencyObject/DependencyProperty<span style="font-family: 宋体">高。注意这里指的是访问，不要和前面的绑定混淆了。但是，把属性注册为</span>DependencyProperty<span style="font-family: 宋体">会有很多的优点：比如继承、数据绑定和</span>Style<span style="font-family: 宋体">。所以有时候我们可以在实现</span>DependencyProperty<span style="font-family: 宋体">的时候，利用缓存机制来加速访问速度：看下面的缓存例子：</span></p>
<p style="margin-left: 21pt; text-indent: 0cm"><span style="font-family: 宋体"></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">readonly</span><span style="color: #000000">&nbsp;DependencyProperty&nbsp;MagicStringProperty&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;DependencyProperty.Register(</span><span style="color: #800000">"</span><span style="color: #800000">MagicString</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(</span><span style="color: #0000ff">string</span><span style="color: #000000">),&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(MyButton),&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PropertyMetadata(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PropertyInvalidatedCallback(OnMagicStringPropertyInvalidated),</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GetValueOverride(MagicStringGetValueCallback)));<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnMagicStringPropertyInvalidated(DependencyObject&nbsp;d)<br />
<img id="Codehighlighter1_362_430_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_362_430_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_362_430_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_362_430_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_362_430_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_362_430_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_362_430_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_362_430_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;</span><span id="Codehighlighter1_362_430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_362_430_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;将缓存的数据标识为无效</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;((MyButton)d)._magicStringValid&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;MagicStringGetValueCallback(DependencyObject&nbsp;d)<br />
<img id="Codehighlighter1_504_566_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_504_566_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_504_566_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_504_566_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_504_566_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_504_566_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_504_566_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_504_566_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;</span><span id="Codehighlighter1_504_566_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_504_566_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;调用缓存的访问器来获取值</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;((MyButton)d).MagicString;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;私有的CLR访问器和本地缓存</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;MagicString<br />
<img id="Codehighlighter1_615_904_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_615_904_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_615_904_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_615_904_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_615_904_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_615_904_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_615_904_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_615_904_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;</span><span id="Codehighlighter1_615_904_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_615_904_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000"><br />
<img id="Codehighlighter1_629_837_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_629_837_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_629_837_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_629_837_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_629_837_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_629_837_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_629_837_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_629_837_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_629_837_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_629_837_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;在当前值无效时，获取最新的值保存起来</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">_magicStringValid)<br />
<img id="Codehighlighter1_695_804_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_695_804_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_695_804_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_695_804_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_695_804_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_695_804_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_695_804_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_695_804_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_695_804_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_695_804_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_magicString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">string</span><span style="color: #000000">)GetValueBase(MagicStringProperty);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_magicStringValid&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_magicString;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000"><br />
<img id="Codehighlighter1_850_901_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_850_901_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_850_901_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_850_901_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_850_901_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_850_901_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_850_901_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_850_901_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_850_901_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_850_901_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(MagicStringProperty,&nbsp;value);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;_magicString;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;_magicStringValid;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p style="margin-left: 21pt; text-indent: 0cm"><br />
另外，因为注册的</span>DependencyProperty<span style="font-family: 宋体">在默认是不可继承的，如果需要继承特性，也会降低</span>DependencyProperty<span style="font-family: 宋体">值刷新的效率。注册</span>DependencyProperty<span style="font-family: 宋体">属性时，应该把</span>DefaultValue<span style="font-family: 宋体">传递给</span>Register<span style="font-family: 宋体">方法的参数来实现默认值的设置，而不是在构造函数中设置。</span></p>
<p style="margin-left: 21pt; text-indent: 0cm"><strong>&nbsp;</strong></p>
<p style="margin-left: 21pt; text-indent: -21pt">五、<strong><span style="font-family: 宋体">应用程序资源</span></strong></p>
<p style="margin-left: 39.3pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">在自定义控件，尽量不要在控件的</span>ResourceDictionary<span style="font-family: 宋体">定义资源，而应该放在</span>Window<span style="font-family: 宋体">或者</span>Application<span style="font-family: 宋体">级。因为放在控件中会使每个实例都保留一份资源的拷贝。</span></p>
<p style="margin-left: 39.3pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">尽量使用</span>Static Resources,<span style="font-family: 宋体">但不能盲目使用。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt">六、<strong><span style="font-family: 宋体">文本</span></strong></p>
<p style="margin-left: 39pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">文字少的时候用</span>TextBlock<span style="font-family: 宋体">或者</span>label,<span style="font-family: 宋体">长的时候用</span>FlowDocument.</p>
<p style="margin-left: 39pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">使用元素</span>TextFlow<span style="font-family: 宋体">和</span>TextBlock<span style="font-family: 宋体">时，如果不需要</span>TextFlow<span style="font-family: 宋体">的某些特性，就应该考虑使用</span>TextBlock<span style="font-family: 宋体">，因为它的效率更高。</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">在</span>TextFlow<span style="font-family: 宋体">中使用</span>UIElement<span style="font-family: 宋体">（比如</span>TextBlock<span style="font-family: 宋体">）所需的代价要比使用</span>TextElement<span style="font-family: 宋体">（比如</span>Run<span style="font-family: 宋体">）的代价高</span>.<span style="font-family: 宋体">在</span>FlowDocument<span style="font-family: 宋体">中尽量避免使用</span>TextBlock<span style="font-family: 宋体">，要用</span>Run<span style="font-family: 宋体">替代。代码如下：</span></p>
<table style="width: 98.9%" cellspacing="0" cellpadding="0" width="98%" border="0">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top" colspan="2">
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;FlowDocument&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;!-- Text content within a Run (more efficient). --&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Paragraph&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; &lt;Run&gt;Line one&lt;/Run&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;/Paragraph&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;!-- Text content within a TextBlock (less efficient). --&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Paragraph&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&nbsp;&nbsp; &lt;TextBlock&gt;Line two&lt;/TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;/Paragraph&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/FlowDocument&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 39pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">在</span>TextBlock<span style="font-family: 宋体">中显式的使用</span>Run<span style="font-family: 宋体">命令比不使用</span>Run<span style="font-family: 宋体">命名的代码要高。</span></p>
<table style="width: 98.9%" cellspacing="0" cellpadding="0" width="98%" border="0">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top" colspan="2">
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;!-- Run is used to set text properties. --&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Run FontWeight="Bold"&gt;Hello, world&lt;/Run&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;!-- TextBlock is used to set text properties, which is more efficient. --&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock FontWeight="Bold"&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;Hello, world</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/TextBlock&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 39pt; text-indent: -18pt">5．&nbsp;<span style="font-family: 宋体">把</span>Label<span style="font-family: 宋体">（标签）元素的</span>ContentProperty<span style="font-family: 宋体">和一个字符串（</span>String<span style="font-family: 宋体">）绑定的效率要比把字符串和</span>TextBlock<span style="font-family: 宋体">的</span>Text<span style="font-family: 宋体">属性绑定的效率低。因为</span>Label<span style="font-family: 宋体">在更新字符串是会丢弃原来的字符串，全部重新显示内容。如果字符串不需要更新，用</span>Label<span style="font-family: 宋体">就无所谓性能问题。</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">6．&nbsp;<span style="font-family: 宋体">在</span>TextBlock<span style="font-family: 宋体">块使用</span>HyperLinks<span style="font-family: 宋体">时，把多个</span>HyperLinks<span style="font-family: 宋体">组合在一起效率会更高。</span></p>
<table style="width: 100%" cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top" colspan="2">
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;!-- Hyperlinks in separate TextBlocks. --&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Hyperlink TextDecorations="None" NavigateUri="http://www.msn.com"&gt;MSN Home&lt;/Hyperlink&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock Text=" | "/&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Hyperlink TextDecorations="None" NavigateUri="http://my.msn.com"&gt;My MSN&lt;/Hyperlink&gt;</span></p>
            <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/TextBlock&gt;</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top" colspan="2">
            <table style="width: 98.9%" cellspacing="0" cellpadding="0" width="98%" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: medium none; padding-right: 4.2pt; border-top: white 1pt solid; padding-left: 4.2pt; background: #f7f7ff; padding-bottom: 0cm; border-left: medium none; padding-top: 4.2pt; border-bottom: #d5d5d3 1pt solid" valign="top" colspan="2">
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;!-- Hyperlinks combined in the same TextBlock. --&gt;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;TextBlock&gt;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Hyperlink TextDecorations="None" NavigateUri="http://www.msn.com"&gt;MSN Home&lt;/Hyperlink&gt;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Run Text=" | " /&gt;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&nbsp;&lt;Hyperlink TextDecorations="None" NavigateUri="http://my.msn.com"&gt;My MSN&lt;/Hyperlink&gt;</span></p>
                        <p style="margin: 0cm 0.85pt 0pt; text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="color: #000066">&lt;/TextBlock&gt;</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p style="margin-left: 39pt; text-indent: -18pt">7．&nbsp;<span style="font-family: 宋体">显示超链接的时候，尽量只在</span>IsMouseOver<span style="font-family: 宋体">为</span>True<span style="font-family: 宋体">的时候显示下划线，一直显示下划线的代码高很多</span></p>
<p style="margin-left: 39pt; text-indent: -18pt">8．&nbsp;<span style="font-family: 宋体">尽量不使用不必要的字符串连接。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt">七、<strong><span style="font-family: 宋体">数据绑定</span></strong></p>
<p style="margin-left: 21pt; text-indent: 0cm">1<span style="font-family: 宋体">．在使用数据绑定的过程中，如果绑定的数据源是一个</span>CLR<span style="font-family: 宋体">对象，属性也是一个</span>CLR<span style="font-family: 宋体">属性，那么在绑定的时候对象</span>CLR<span style="font-family: 宋体">对象所实现的机制不同，绑定的效率也不同。</span></p>
<p style="margin-left: 21pt">A<span style="font-family: 宋体">、数据源是一个</span>CLR<span style="font-family: 宋体">对象，属性也是一个</span>CLR<span style="font-family: 宋体">属性。对象通过</span>TypeDescriptor/PropertyChanged<span style="font-family: 宋体">模式实现通知功能。此时绑定引擎用</span>TypeDescriptor<span style="font-family: 宋体">来反射源对象。效率最低。</span></p>
<p style="margin-left: 21pt">B<span style="font-family: 宋体">、数据源是一个</span>CLR<span style="font-family: 宋体">对象，属性也是一个</span>CLR<span style="font-family: 宋体">属性。对象通过</span>INotifyPropertyChanged<span style="font-family: 宋体">实现通知功能。此时绑定引擎直接反射源对象。效率稍微提高。</span></p>
<p style="margin-left: 21pt">C<span style="font-family: 宋体">、数据源是一个</span>DependencyObject<span style="font-family: 宋体">，而且属性是一个</span>DependencyProperty<span style="font-family: 宋体">。此时不需要反射，直接绑定。效率最高。</span></p>
<p style="margin-left: 21.3pt">2<span style="font-family: 宋体">．当一个</span>CLR<span style="font-family: 宋体">对象很大时，比如有</span>1000<span style="font-family: 宋体">个属性时，尽量把这个对象分解成很多很小的</span>CLR<span style="font-family: 宋体">对象。比如分成</span>1000<span style="font-family: 宋体">个只有一个属性的</span>CLR<span style="font-family: 宋体">对象。</span></p>
<p style="margin-left: 39.3pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">当我们在列表（比如</span>ListBox<span style="font-family: 宋体">）显示了一个</span>CLR<span style="font-family: 宋体">对象列表（比如</span>List<span style="font-family: 宋体">）时，如果想在修改</span>List<span style="font-family: 宋体">对象后，</span>ListBox<span style="font-family: 宋体">也动态的反映这种变化。此时，我们应该使用动态的</span>ObservableCollection<span style="font-family: 宋体">对象绑定。而不是直接的更新</span>ItemSource<span style="font-family: 宋体">。两者的区别在于直接更新</span>ItemSource<span style="font-family: 宋体">会使</span>WPF<span style="font-family: 宋体">抛弃</span>ListBox<span style="font-family: 宋体">已有的所有数据，然后全部重新从</span>List<span style="font-family: 宋体">加载。而使用</span>ObservableCollection<span style="font-family: 宋体">可以避免这种先全部删除再重载的过程，效率更高。</span></p>
<p style="margin-left: 39.3pt; text-indent: -18pt">4．&nbsp;<span style="font-family: 宋体">尽量绑定</span>IList<span style="font-family: 宋体">而不是</span>IEnumerable<span style="font-family: 宋体">到</span>ItemsControl<span style="font-family: 宋体">。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt">八、<strong><span style="font-family: 宋体">其它性能建议</span></strong></p>
<p style="margin-left: 39pt; text-indent: -18pt">1．&nbsp;<span style="font-family: 宋体">如果需要修改元素的</span>Opacity<span style="font-family: 宋体">属性，最后修改一个</span>Brush<span style="font-family: 宋体">的属性，然后用这个</span>Brush<span style="font-family: 宋体">来填充元素。因为直接修改元素的</span>Opacity<span style="font-family: 宋体">会迫使系统创建一个临时的</span>Surface</p>
<p style="margin-left: 39pt; text-indent: -18pt">2．&nbsp;<span style="font-family: 宋体">用</span>NavigationWindow<span style="font-family: 宋体">的时候，尽量</span>Update the client area by object,<span style="font-family: 宋体">而不是</span>URI</p>
<p style="margin-left: 39pt; text-indent: -18pt">3．&nbsp;<span style="font-family: 宋体">尽量不要使用</span>ScrollBarVisibility=Auto </p>
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1114161.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41921/" target="_blank">[新闻]Internet 另一超级漏洞被公布</a>]]></description></item><item><title>为WPF/SilverLight的学习者们打气</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114009.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Wed, 19 Mar 2008 17:47:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114009.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1114009.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1114009.html#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1114009.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1114009.html</trackback:ping><description><![CDATA[最近园子里面学习WPF/SilverLight的同志们越来越多了，我把一年前做的WPF的一个Demo发上来，让还在犹豫要不要学的兄弟们看看，咱用WPF/SilverLight做效果也绝对不比Flash/Flex差，呵呵。<br />
<span style="color: red"><a style="color: #ff0000" href=""  href_cetemp><span style="href_cetemp: "  href_cetemp ?><span style="color: red"><a title="这里是Demo" style="color: #ff0000" href="http://www.cnblogs.com/Files/yzlhccdec/Debug.rar">http://www.cnblogs.com/Files/yzlhccdec/Debug.rar</a><br />
<a style="color: #ff0000" href=""  href_cetemp><span style="href_cetemp: "  href_cetemp ?><span style="color: red"><a style="color: #ff0000" href=""  href_cetemp><span style="href_cetemp: "  href_cetemp ?><span style="color: red"><a title="这里是源代码" href="http://www.cnblogs.com/Files/yzlhccdec/DemoSrc.rar">这里是源代码</a></span></a></span><br />
</a></span></a></span><br />
<span style="color: red">大家开发<font face="Verdana">WPF/SilverLight的时候一定要用Blend！！！！VS 2008根本就不是做美工的。。顶多写写cs代码<br />
</font></span>对了，装了Blend之后会有几个Sample，都很炫的<br />
<br />
<img height="245" alt="" src="http://www.cnblogs.com/images/cnblogs_com/yzlhccdec/Untitled.jpg" width="325" border="0" />&nbsp;<br />
<br />
你们先继续探索，我随后跟进...... <br />
<br />
另外 <a title="这里是yahoo用WPF开发的Messenger" href="http://messenger.yahoo.com/windowsvista.php">这里是yahoo用WPF开发的Messenger</a>&nbsp;效果也是非常不错的，不过有点慢.... </span></span></span>
 <img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1114009.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41921/" target="_blank">[新闻]Internet 另一超级漏洞被公布</a>]]></description></item><item><title>.Net中Char的长度</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1113998.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Wed, 19 Mar 2008 16:50:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1113998.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1113998.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/20/1113998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1113998.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1113998.html</trackback:ping><description><![CDATA[以前一直在c++中用Char表示一个字节的数据，今天刚发现在C#中Char是两个字节的。我倒。。。。
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1113998.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41921/" target="_blank">[新闻]Internet 另一超级漏洞被公布</a>]]></description></item><item><title>一个ACM在线提交系统，支持c#提交</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/16/1108595.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Sun, 16 Mar 2008 10:13:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/16/1108595.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1108595.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/16/1108595.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1108595.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1108595.html</trackback:ping><description><![CDATA[有时间还是学学算法吧，反正有好处就得了。<br />
<font face="Verdana"><a href="http://www.spoj.pl">http://www.spoj.pl</a></font> <br />
好不容易找到这个支持c#在线提交的题库
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1108595.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41920/" target="_blank">[新闻]3 个独特的未来搜索引擎</a>]]></description></item><item><title>关于三层架构的一些疑问</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/13/1103023.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Wed, 12 Mar 2008 18:19:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/13/1103023.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1103023.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/13/1103023.html#Feedback</comments><slash:comments>66</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1103023.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1103023.html</trackback:ping><description><![CDATA[<p>1.我们在设计网站的时候，经常有前台用于展现的实体和后台用于持久化的实体不完全相同的情况。比如星座这种数据，在后台存的可能是一个tinyint值，但是在前台显示的时候肯定要转成&#8220;某某座&#8221;这样，对于这种情况，我现在的处理方法是建立PO，VO两种对象，但现在有两个问题：1.VO、PO定义在哪？是分别定义到自己所属的层，不允许穿透？还是统一定义到Model层里面去？2.VO&lt;-&gt;PO在哪进行转换？（如果都放到BLL层，会造成BLL层过于臃肿。如果放到对象内部的话，有时候又不得不在对象内部调用持久化方法，虽然我现在的做法是把不依赖于持久化的方法放到对象内部，但是总觉得这样的话逻辑过于分散，不好管理）<br />
<br />
2.BLL到底是写成实体类好还是静态类好？我曾经看过CM的代码，发现它BLL层的方法全是Static的，我个人也觉得用Static是不是会好一点？因为我暂时没碰到过BLL里面要继承或者是实现接口的。<br />
<br />
3.自从DLINQ出现后，对传统的三层架构有了一点影响。因为LINQ本身可以作为一个Thin DAL使用，当然也可以在它的基础上再封装一次，实现DAL接口。不过我的问题是，如果我们把LINQ封装起来用的话，岂不是LINQ带来的动态生成查询的好处就不存在了？因为如果采用实现接口的形式的话，其返回类型势必不能是IQueryable。</p>
 <img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1103023.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41919/" target="_blank">[新闻]诺基亚新机N85 N79发布</a>]]></description></item><item><title>使用LINQ进行多表操作(二)</title><link>http://www.cnblogs.com/yzlhccdec/archive/2008/03/11/1100928.html</link><dc:creator>yzlhccdec</dc:creator><author>yzlhccdec</author><pubDate>Tue, 11 Mar 2008 10:04:00 GMT</pubDate><guid>http://www.cnblogs.com/yzlhccdec/archive/2008/03/11/1100928.html</guid><wfw:comment>http://www.cnblogs.com/yzlhccdec/comments/1100928.html</wfw:comment><comments>http://www.cnblogs.com/yzlhccdec/archive/2008/03/11/1100928.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/yzlhccdec/comments/commentRss/1100928.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yzlhccdec/services/trackbacks/1100928.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="font-family: 'Verdana','sans-serif'; mso-bidi-font-size: 10.5pt">1:M或者M:M</span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: Verdana; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Verdana">关系的多表操作</span></strong><strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="font-family: 'Verdana','sans-serif'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></strong>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: Verdana; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Verdana">表结构如下</span><span lang="EN-US" style="font-family: 'Verdana','sans-serif'; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span lang="EN-US" style="mso-no-proof: yes"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span lang="EN-US"><o:p><img height="92" alt="" src="http://www.cnblogs.com/images/cnblogs_com/yzlhccdec/3.jpg" width="558" border="0" />&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><strong style="mso-bidi-font-weight: normal"><span style="color: #92d050; font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">直接写表达式<br />
</span></strong><span lang="EN-US"></p>
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">正常选取</span><span style="color: #008000"><br />
</span><span style="color: #000000">var&nbsp;user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.Users.Where(p&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;p.UserID&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10300</span><span style="color: #000000">).Select(p&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_78_93_Open_Text"><span style="color: #000000">{p,&nbsp;p.UserTags}</span></span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">带条件选取</span><span style="color: #008000"><br />
</span><span style="color: #000000">var&nbsp;user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.Users.Where(p&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;p.UserID&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10300</span><span style="color: #000000">).Select(p&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_174_225_Open_Text"><span style="color: #000000">{p,&nbsp;UserTags&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;p.UserTags.Where(o&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;o.TagID&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10</span><span style="color: #000000">)}</span></span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">Email</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">NickName</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t1</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID2</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t1</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">TagID</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">COUNT</span><span style="color: #000000">(</span><span style="color: #808080">*</span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserTag</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t2</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t2</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">value</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">Users</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">LEFT</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">OUTER</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">JOIN</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserTag</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t1</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t1</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">10300</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">ORDER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t0</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UserID</span><span style="color: #ff0000">]</span><span style="color: #000000">,&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">t1</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">TagID</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<p class="MsoNormal" style="text-indent: 21pt"><strong style="mso-bidi-font-weight: normal"><span style="color: #92d050; font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">使用</span><span lang="EN-US" style="color: #92d050">LoadOption</span></strong><strong style="mso-bidi-font-weight: normal"><span style="color: #92d050; font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">选项<br />
</span></strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><span style="color: #0000ff">var</span>&nbsp;option&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataLoadOptions();<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><font face="Verdana">option.AssociateWith&lt;User&gt;(p =&gt; p.UserTags.Where(o =&gt; o.TagID &gt; 10));<br />
</font></span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />context.LoadOptions&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;option;<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />var&nbsp;user&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.Users.Where(p&nbsp;</span><span style="color: #000000">=&gt;</span><span style="color: #000000">&nbsp;p.UserID&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">10300</span><span style="color: #000000">).Single();<br />
<img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />var&nbsp;userTags&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;user.UserTags;</span></div>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">这里要把LoadWith改成AssociateWith，因为LoadWith后面的参数只能以*.*这种形式出现，说白了就是只能是一整条记录，而且不能加过滤任何条件<br />
</span></p>
<p class="MsoNormal" style="text-indent: 21pt"><strong style="mso-bidi-font-weight: normal"><span style="color: #92d050; font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">使用</span><span lang="EN-US" style="color: #92d050">Join</span></strong><strong style="mso-bidi-font-weight: normal"><span style="color: #92d050; font-family: 宋体; mso-ascii-font-family: Calibri; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">语句<br />
</span></strong></p>
<span lang="EN-US"><o:p>&nbsp;&nbsp;&nbsp;&nbsp; 使用方法也和之前的一样，另外我们还可以用Contains()来实现同样的效果，翻译成的SQL语句也会相应的变成EXISTS 或者 IN.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; <strong>总结<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp; 总的来说，我还是觉得如果要进行多表操作的话Join是首选。至于LoadOption，我只能感慨&#8220;既生Join，何生LoadOption&#8221;，当然如果LoadOption还有隐藏必杀技的话，希望知道的朋友可以告诉我。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 对于1:M或者M:M的关系，不论用上面哪种方法，都会选出一堆重复数据，如果我不想要那些重复数据怎么办？对于1:M关系的数据还好说，直接取2次就成了，但是对于M:M的呢？我现在的做法是第一次取了之后，把参数转成字符串，然后再到SQL里面去Split（用CLR函数），不知道还有没有更好的办法？<br />
<br />
</o:p></span>
<p class="MsoNormal" style="text-indent: 21pt"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt">&nbsp;</p>
<img src ="http://www.cnblogs.com/yzlhccdec/aggbug/1100928.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41918/" target="_blank">[新闻]数据库市场:微软和甲骨文快速进步 威胁IBM</a>]]></description></item></channel></rss>