﻿<?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>博客园-Adrian's Tech Blog</title><link>http://www.cnblogs.com/Dah/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 04:39:57 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 04:39:57 GMT</pubDate><ttl>60</ttl><item><title>为Silverlight控件添加鼠标滚轮支持</title><link>http://www.cnblogs.com/Dah/archive/2009/02/13/1389792.html</link><dc:creator>Adrian H.</dc:creator><author>Adrian H.</author><pubDate>Fri, 13 Feb 2009 02:54:00 GMT</pubDate><guid>http://www.cnblogs.com/Dah/archive/2009/02/13/1389792.html</guid><wfw:comment>http://www.cnblogs.com/Dah/comments/1389792.html</wfw:comment><comments>http://www.cnblogs.com/Dah/archive/2009/02/13/1389792.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dah/comments/commentRss/1389792.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dah/services/trackbacks/1389792.html</trackback:ping><description><![CDATA[<p>其实网上有挺多实现鼠标滚轮支持的文章，原理都一样，通过 HtmlPage.Window.AttachEvent("DOMMouseScroll", ...)来对ScrollViewer进行控制，但许多却仅限于对ScrollViewer添加滚轮支持，而对TextBox、ListBox这样的控件 好像挺没辙的。</p>
<p>使用Reflector看TextBox和ListBox的实现，发现他们内部都有一个field为ScrollViewer，只要读到这个 field，应该就能对它们的滚动进行控制。我尝试使用反射获取它们的ScrollViewer，但Silverlight的安全机制和完全版的CLR不 同，它不允许我获得非public的成员。。。<br />
</p>
<p>突然...从Reflector看到TextBox和ListBox都使用了父类的GetTemplateChild方法获取 ScrollViewer对象，而GetTemplateChild是protected方法，所以只需要创建一个类，继承TextBox或者 ListBox，再使用GetTemplateChild来暴露他们的ScrollViewer！</p>
<div><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;Xin.Silverlight.MouseWheelSupport<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span>&nbsp;<span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ListBox&nbsp;:&nbsp;System.Windows.Controls.ListBox,&nbsp;IScrollable<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScrollViewer&nbsp;sw;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;ScrollViewer&nbsp;ScrollViewer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(sw&nbsp;</span><span style="color: #000000;">==</span>&nbsp;<span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;GetTemplateChild(</span><span style="color: #800000;">"</span><span style="color: #800000;">ScrollViewer</span><span style="color: #800000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">as</span><span style="color: #000000;">&nbsp;ScrollViewer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sw;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<p>&nbsp;代码中的IScrollable是自己写的一个小接口，声明实现它的类必须拥有一个ScrollViewer property。示例代码中只对TextBox和ListBox实现了该接口，假设需要对GridView等控件添加滚轮支持，只需实现这个接口并暴露 出它的ScrollViewer对象。</p>
<p>&nbsp;稍稍整理了一下代码，只需要执行<strong>MouseWheelSupportAddOn.Activate(this.LayoutRoot, true)</strong>便可以对整个Page的可支持滚轮的控件添加滚轮支持。</p>
<p> <strong>Activate</strong>方法可以接受ContentControl，Panel，IScrollable对象，第二个参数指定是否需要对控件的Children添加滚轮支持。</p>
<p>&nbsp;<br />
</p>
<a href="http://files.cnblogs.com/ready4tech/Xin.Silverlight.MouseWheelSupport.rar">【代码和示例程序下载】</a><img src ="http://www.cnblogs.com/Dah/aggbug/1389792.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47987/" target="_blank">预测：Twitter最可能收购的十家公司</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>LINQ表达式中关于显式范围变量的Bug</title><link>http://www.cnblogs.com/Dah/archive/2008/02/16/1070956.html</link><dc:creator>Adrian H.</dc:creator><author>Adrian H.</author><pubDate>Sat, 16 Feb 2008 15:07:00 GMT</pubDate><guid>http://www.cnblogs.com/Dah/archive/2008/02/16/1070956.html</guid><wfw:comment>http://www.cnblogs.com/Dah/comments/1070956.html</wfw:comment><comments>http://www.cnblogs.com/Dah/archive/2008/02/16/1070956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dah/comments/commentRss/1070956.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dah/services/trackbacks/1070956.html</trackback:ping><description><![CDATA[<p>
MSDN博客中的<a href="http://blogs.msdn.com/ed_maurer/archive/2008/02/16/breaking-change-in-linq-queries-using-explicitly-typed-range-variables.aspx">一篇文章</a>提到了.NET 3.5 SP1会带来的处个修正，见以下代码：
</p>
<p>
<span style="color: blue;">var </span>floats = <span style="color: blue;">new </span><span style="color: #2b91af;">ArrayList </span>{ 2.5f, 3.5f, 4.5f };
<br />
<span style="color: blue;">var </span>ints = <span style="color: blue;">from int </span>i <span style="color: blue;">in </span>floats
<span style="color: blue;">      select </span>i;
</p>
<p>
注意from后面声明的显式类型(int)。开发者会很自然地认为ints为[2,3,4]，但在现在版本.NET 3.5环境下得到的却是[2,4,4]。
</p>
<p>
原来那段LINQ表达式将会被编译为以下方法调用：
</p>
<p>
<span style="color: blue;">var </span>ints = floats.Cast&lt;<span style="color: blue;">int</span>&gt;().Select&lt;<span style="color: blue;">int</span>,<span style="color: blue;">int</span>&gt;(i =&gt; i);
</p>
<p>
问题便出现在Cast这个扩展方法中，而Cast内部是通过调用Convert类的ToInt32方法转换ArrayList中元素类型的，而这个方法既不是对浮点数进行截去小数，也不是简单的round：
ToInt32方法的文档中是这样描述返回值的：
</p>
<p>
value rounded to the nearest 32-bit signed integer. If value is halfway
between two whole numbers, the even number is returned; that is, 4.5 is
converted to 4, and 5.5 is converted to 6.
</p>
<p>
这种数值转换的方式被称为<a href="http://www.google.com/search?q=Banker%27s+rounding&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enCN258CN258">Banker's rounding</a>。
</p>
<p>
这是个程序语义的问题，将在以后的.NET Frameworkk 3.5 SP1中解决，估计只是修改Cast方法的实现。现在的应对方法是在一些应用场景中不使用显式范围变量。
</p>
<img src ="http://www.cnblogs.com/Dah/aggbug/1070956.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47986/" target="_blank">网易澄清:与暴雪合资公司仅提供技术支持</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>jQuery太好使了</title><link>http://www.cnblogs.com/Dah/archive/2008/02/14/1069063.html</link><dc:creator>Adrian H.</dc:creator><author>Adrian H.</author><pubDate>Thu, 14 Feb 2008 12:13:00 GMT</pubDate><guid>http://www.cnblogs.com/Dah/archive/2008/02/14/1069063.html</guid><wfw:comment>http://www.cnblogs.com/Dah/comments/1069063.html</wfw:comment><comments>http://www.cnblogs.com/Dah/archive/2008/02/14/1069063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dah/comments/commentRss/1069063.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dah/services/trackbacks/1069063.html</trackback:ping><description><![CDATA[<p>
结合jQuery写了一个类似Web Portal的窗体控制页面（<a href="http://x-dev.cn/Demo/PortalPrototype/">Demo</a>），以前也用过Prototype等JavaScript library，发现jQuery不仅轻量，更是有自己的独特之处，足以满足自己的开发需求了~用jQuery我可以忽略很多basic的问题，比如浏览器兼容性。真是能让人体会到JavaScript的强大了。
</p>
<p>
看这个Web Portal Demo的源码就可能发现我有滥用closure的嫌疑，JavaScript的closure等动态特性简化了思维，抛开class，解决问题是那么直接~
</p>
<img src ="http://www.cnblogs.com/Dah/aggbug/1069063.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>一次性下载.NET源码和pdb，并在VS2005中进行调试</title><link>http://www.cnblogs.com/Dah/archive/2008/02/12/1067485.html</link><dc:creator>Adrian H.</dc:creator><author>Adrian H.</author><pubDate>Tue, 12 Feb 2008 13:59:00 GMT</pubDate><guid>http://www.cnblogs.com/Dah/archive/2008/02/12/1067485.html</guid><wfw:comment>http://www.cnblogs.com/Dah/comments/1067485.html</wfw:comment><comments>http://www.cnblogs.com/Dah/archive/2008/02/12/1067485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dah/comments/commentRss/1067485.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dah/services/trackbacks/1067485.html</trackback:ping><description><![CDATA[原文： <a href="http://www.wintellect.com/cs/blogs/jrobbins/archive/2008/02/06/download-all-the-net-reference-source-code-at-once-with-net-mass-downloader.aspx">Download All the .NET Reference Source Code at Once with Net Mass Downloader</a><br />
这篇文章介绍了如何使用<a href="http://www.codeplex.com/NetMassDownloader">Net Mass Downloader</a>批量下载<a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">.NET源代码</a>和pdb文件，如何<a href="http://www.wintellect.com/cs/blogs/jrobbins/archive/2008/02/06/download-all-the-net-reference-source-code-at-once-with-net-mass-downloader.aspx">配置VS2005</a>以支持使用.NET源代码进行调试。<br />
<br />
<br />
End of post<br />
<img src ="http://www.cnblogs.com/Dah/aggbug/1067485.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47984/" target="_blank">《商业周刊》:Mozilla的志愿者开发模式被复制</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Windows Server 2008: Server Core初体验</title><link>http://www.cnblogs.com/Dah/archive/2008/02/10/1066610.html</link><dc:creator>Adrian H.</dc:creator><author>Adrian H.</author><pubDate>Sun, 10 Feb 2008 08:05:00 GMT</pubDate><guid>http://www.cnblogs.com/Dah/archive/2008/02/10/1066610.html</guid><wfw:comment>http://www.cnblogs.com/Dah/comments/1066610.html</wfw:comment><comments>http://www.cnblogs.com/Dah/archive/2008/02/10/1066610.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dah/comments/commentRss/1066610.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dah/services/trackbacks/1066610.html</trackback:ping><description><![CDATA[<p>
（又是初体验？）
</p>
<p>
<a href="http://msdn2.microsoft.com/en-us/library/ms723891%28VS.85%29.aspx">
Server Core</a>的理念挺好的，极度减少预装的特性，减小被攻击外表以提高稳定性和效率，可自定义服务器角色和特性。
</p>
<p>
我的三年前买的本，从安装到登录用了30分钟（典型的Server Core安装时间为15分钟）。<br />
硬盘占用为1.5G。
</p>
<p>
<a href="http://76.13.18.70/2357/2253752777_f2d720bb37_o.png">
<img src="http://76.13.18.70/2357/2253752777_41c5462f67.jpg" alt="" /></a><br />
<a href="http://76.13.18.70/2204/2253753125_bce91fcd5c_o.png"><img src="http://76.13.18.70/2204/2253753125_c7f61824ff.jpg" alt="" /></a><br />
登录后只有一个命令行，传说中的"没有图形界面（GUI）"，其实只是没有Explorer.exe这个Shell而已，GDI是不会跑出这个版本的
Windows内核的。Virtual Machine Addition安装失败，可能是因为没有对应Windows版本的安装包。<br />
Task Manager里多了个Service标签页。<br />
About中显示的版本：Build 6001: Service Pack 1，据消息称跟这和Vista SP1的版本号相同。Server
2008与Vista SP1是相同的版本的核心组件，这可以理解，但显示给用户看会不会很奇怪呢："RTM的版本就已经SP1了"。<br />
Create New Task对话框中的Browse按钮点击竟然无反应，看来在Server Core安装中是无法看到"文件夹图标"了，既然没有Shell这个按钮无效，为什么还要保留呢？灰的也可以理解啊。
</p>
<p>
于是我尝试安装一些Feature，使用ocsetup。。<br />
本以为完全安装完IIS7会有一个可视化的管理界面，上网搜索后发现那是<a href="http://blogs.iis.net/metegokt/archive/2007/06/26/administering-iis7-on-server-core-installations-of-windows-server-2008.aspx">不会有的</a>。。<br />
安装GUI Shell界面到Server Core必定不是很简单的事情，我甚至没有找到一篇相关的文章。
我便想念GUI界面了，命令行对专家来说效率的确可以比GUI高，但GUI也并不是那么邪恶吧，有个选择多好呢（Server Core with GUI）？
</p>
<p>
Server Core对我来说没什么意义了，回北京买了新本后装个Full installation吧~</p>
<p>&nbsp;</p>
Original post: <a href="http://x-dev.cn/post/Windows-Server-2008-Server-Core-Exp.aspx">http://x-dev.cn/post/Windows-Server-2008-Server-Core-Exp.aspx</a><br />
<img src ="http://www.cnblogs.com/Dah/aggbug/1066610.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47977/" target="_blank">Mono 的Virtual PC 虚拟机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>