<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/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>New Things I Learned</title>
        <link>http://geekswithblogs.net/NewThingsILearned/Default.aspx</link>
        <description> </description>
        <language>en-US</language>
        <copyright>Muljadi Budiman</copyright>
        <managingEditor>muljadibudiman@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>New Things I Learned</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/NewThingsILearned/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>2009 St. Louis Day of .NET Conference - August 28 &amp; 29</title>
            <category>.NET</category>
            <category>Blogging</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2009/06/11/announcing-the-2009-st.-louis-day-of-.net-conference.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Residing in St. Louis, I just wanted to let others know about the upcoming St. Louis Day of .Net conference!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;This will be the second time around - last year it was held in December (granted we had a mild winter, it's still cold nonetheless) and this year it's going to be held in August - yay, no more cold (I bet it's going to be very hot in fact).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;And it has so much content, it's spilling over into a 2 day conference!.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Conference website is: &lt;a href="http://www.stlouisdayofdotnet.com"&gt;www.stlouisdayofdotnet.com&lt;/a&gt; - check it out, it has lots of info on it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Don't want to sound like an ad, but this is exciting stuff for me.  Cheerio.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132759"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132759" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/132759.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2009/06/11/announcing-the-2009-st.-louis-day-of-.net-conference.aspx</guid>
            <pubDate>Thu, 11 Jun 2009 19:05:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/132759.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2009/06/11/announcing-the-2009-st.-louis-day-of-.net-conference.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/132759.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/132759.aspx</trackback:ping>
        </item>
        <item>
            <title>Enabling Wireless Network in Windows Server 2008</title>
            <category>Windows</category>
            <category>OS</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/30/enabling-wireless-network-in-windows-server-2008.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;I don't have any post relating to how I get to know computers in general and why I choose a career in software development, in fact I needed to do that, since I need to continue a meme that a friend of mine forwarded to me.  I'll try to do that sometime later, but suffice to say that it's quite lengthy.  Because of my (yet to posted) background, I usually install stuff myself and fiddle quite a bit with computers by myself.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I had installed quite a bit of Windows-based Microsoft OS, from Windows 95 beta thru Vista; and it is getting easier to do these installations due to the ability to virtualize stuff, so you don't need to have the physical hardware for it.  I wanted to try out the VS2010 CTP a couple of months back, so I decided to install Windows Server 2008 to my laptop, since I'd like to be able to run VS2010 with multiple processors thru 2008's Hypervisor.  I didn't think I'd hit much snags, but I got confused when trying to set up the wireless connection.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Once the OS is installed, I went to Device Manager to install the driver for the wireless card; everything went fine.  So, I then tried to Connect to Network - the dialog only shows that Windows can't find any network.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;img height="439" width="640" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/ConnectToNetwork.png" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Going thru the Set up a connection or network, eventually brought me back to this same dialog.  I was very confused, and reading the help didn't enlighten me any.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;One of the reason this situation occur is because I'm actually installing on a physical PC; my installs in the past 2 years have been in Virtual PCs - which meant all network connection are essentially bridged from the guest OS, thus the VPC system will have its Network (the ethernet network by default, not wireless) to use its host OS network connection.  I remembered when installting Vista &amp;amp; XP on a physical PC, wireless almost always work after the driver is installed.  What's going on here?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;On a new Windows Server 2008 install, when you log in, there's this Initial Configuration Task window that shows up; I looked there and near the bottom there's this mention of Adding Features.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;img height="777" width="1024" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/InitialConfigurationTask.png" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I clicked it and to my surprise, the last entry is about Wireless Configuration.  I promptly installed it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="587" width="780" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/AddFeaturesWizard.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;With it installed, now the dialog display the list of wireless networks that the computer detects.  So I clicked on mine and tried to connect; it fails, just saying that Windows can't connect; the diagnostic dialog didn't really help either.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The wireless setup is also different than the ones I remember in XP - in XP, I would usually just set up my wireless connection manually.  How would I do that in Server 2008?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;That option is available in the Network and Sharing Center, thru the option of Manage Wireless Networks.  It took me awhile to look for this, since before installing Wireless configuration, that option wasn't available, so I didn't start looking there.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;img height="600" width="800" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/NetworkAndSharingCenter.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;With that option, I went thru setting up a connection profile manually; even though the dialogs are different, but the information requested is much more familiar to me.  After successfully adding my network, I tried to connect to it again - which still fails.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;At this point, since I know my wireless network setup, it's a matter of changing properties of my network profile.  I have a pretty weird setup, where I set my 'Network Authentication' to Shared, the default is Open, and will cause any attempt to connect to my wireless network to fail.  At least I know that's the problem because I've been stumped by that before.  Switching this, makes everything work again.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Moral of the story:&lt;br /&gt;
1. Always know your wireless network settings, especially ones that are different than typical defaults and cause connection issues.  This is a no brainer - if you don't know what you're doing, prepare to spend lots of time experimenting the first time around.&lt;br /&gt;
2. Playing with Virtual PCs is nice; however you eventually have to do a physical installation to gain experience because that's where sometimes things behave differently than installing in Virtual PCs.&lt;br /&gt;
3. Windows evolve over time; can't expect your past knowledge to fully support your current need - some things do change.&lt;br /&gt;
4. With the opt-in approach, Server 2008 does NOT install wireless support out of the box.  Even though it makes sense to some extent (most servers don't really have wireless NICs, they have physical gigabit NICs), but in this case it held up my experiment for an extra half hour.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Another tip: I usually set up my SSID to not be broadcast; and Windows Server 2008 will show an Unnamed Network in its list.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="439" width="623" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/Unnamed Network-2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;It's a good thing when I installed Server 2008, I decided to make it be broadcast, to make things easier to set up, since I know it's usually something that causes problems.  Ubuntu for instance (at least in my installation a couple of months back) can't connect to a non-SSID broadcasting wireless network.  Unfortunately, when I then made this change (switch my router to not broadcast SSID anymore), Windows Server 2008 refuses to automatically connect to my wireless network when I rebooted the machine.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;My hypothesis of this behavior is that Windows will scan available networks, can't find the one with any of the names of wireless network profiles that are set up and then fails there.  I know for sure Vista &amp;amp; XP doesn't behave like this, so whether this is because it's a Server OS, thus the behavior differs, or maybe it's related to my particular wireless card's driver or something else it's a possibilitiy.  The image below shows the list of wireless network profiles I've set.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;img height="600" width="800" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/ManageWirelessNetworks.png" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The only way I can get this to connect automatically (when I have my router to not broadcast SSID) is to change the profile's setting to try to connect even when it's not broadcasting.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="492" width="379" alt="" src="/images/geekswithblogs_net/NewThingsILearned/20090130/WirelessNetworkProperty1.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I think it's a security hazard, so I usually just change this setting manually (which will allow the system to connect to my unbroadcast SSID network) then change it back.&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129093"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129093" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/129093.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/30/enabling-wireless-network-in-windows-server-2008.aspx</guid>
            <pubDate>Fri, 30 Jan 2009 13:13:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/129093.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/30/enabling-wireless-network-in-windows-server-2008.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/129093.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/129093.aspx</trackback:ping>
        </item>
        <item>
            <title>SQL 2005 Delegation of Windows Account (How to access file across network from SQL Server)</title>
            <category>SQL</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/12/sql-2005-delegation-of-windows-account-how-to-access-file.aspx</link>
            <description>&lt;p&gt;A fellow peer was looking at an error when trying to configure another developer's database.  All of us are working on the same application, but our install doesn't seem to be working correctly, which causes the DB to not be properly installed, thus this guy is trying to configure it manually.  We are using SQL 2005 (either Express or the regular versions) for our DB servers.&lt;/p&gt;
&lt;p&gt;He's using SQL Management Studio, logged in using Windows Authentication and was trying to bulk insert some records (&lt;font color="#0000ff"&gt;BULK INSERT &lt;/font&gt;sometable &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; &lt;font color="#ff0000"&gt;'\\servername\share name\path\file.ext'&lt;/font&gt;)and came up with the error: &lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="1"&gt;Cannot bulk load because the file "\\servername\share name\path\file.ext" could not be opened. Operating system error code 5(Access is denied.).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The connection setup that causes the above error is as depicted below:&lt;/p&gt;
&lt;p&gt;&lt;img height="247" alt="" width="674" src="/images/geekswithblogs_net/NewThingsILearned/SQL 2005 Delegation/ConnectToSQL.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;We're sure that this is because of security, because the same operation worked when we tried it on the database running on the local machine.  Trying to bulk insert from a file in the SQL Server's local drive also works, so we tried figuring out how to solve it.  Spending some 20 minutes fiddling around (we changed the SQL Server's service to use a domain account, we tried sharing on a different computer, etc.) wasn't fruitful.  My interest was piqued enough where I promised myself I need to find out why.&lt;/p&gt;
&lt;p&gt;I got some answers to that; per &lt;a href="http://msdn.microsoft.com/en-us/library/ms175915(SQL.90).aspx"&gt;SQL Books Online&lt;/a&gt; - as delineated in the Security Considerations sub heading - apparently the SQL security profile used to execute is different whether you're logging in to it as a Windows Authenticated user, or as a SQL user.  If you're connecting to SQL Server as a SQL user, it will use the SQL Server process account security profile; if you're connecting as a Windows Authenticated user, it'll use that Windows' user security profile.  However, it is only valid for that particular SQL Server only.&lt;/p&gt;
&lt;p&gt;In the diagram above, if the client connects using SQL user login, then when executing the &lt;font color="#0000ff"&gt;BULK INSERT &lt;/font&gt;statement it will use the SQL Server process account.  In most typical development deployment, this would be NETWORK SERVICE; if the file accessed resides in a typical network share (administered by MIS), most of the time this will result in access denied.  This is because the share has most users/groups to have access, but not Everyone and developer's machines are usually not added as well.  You can simulate this by creating a share locally and if you only add specific users, the SQL statement would fail.&lt;/p&gt;
&lt;p&gt;If the client connects using Windows Authentication, then when executing the &lt;font color="#0000ff"&gt;BULK INSERT &lt;/font&gt;statement it will use that particular Windows user's security profile.  However, the security profile is only used IF the statement only operates on the local computer.  Based on the diagram above, the file resides on another server in the network, thus the &lt;font color="#0000ff"&gt;BULK INSERT &lt;/font&gt;statement will still fail.  To have the security credentials to be forwarded, the system has to be configured for Delegation / Impersonation, which needs to be done at the Active Directory level.  Since I don't have a local test domain, I can't quite test this, but the steps to do this is depicted at &lt;a href="http://kendalvandyke.blogspot.com/2008/11/delegation-what-it-is-and-how-to-set-it.html"&gt;this blog&lt;/a&gt;.  It's pretty involving; since I don't quite specialize in DB, I'm trusting the procedure will work &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;.&lt;/p&gt;
&lt;p&gt;I hope this helps others; it doesn't quite help in our case, but researching this allows me to better understand how and why this problem occurs.  At least I have an answer to our client if someone hits this.&lt;/p&gt;
&lt;p&gt;As another tip (at least for me), there's this nice &lt;a href="http://msdn.microsoft.com/en-us/library/ms175046(SQL.90).aspx"&gt;xp_cmdshell&lt;/a&gt; stored procedure that we use to see if we can access the network directories from the server side.  It's essentially a sproc that allows executing typical command prompts command - so we use it simply by entering: &lt;font color="#0000ff"&gt;EXEC&lt;/font&gt; xp_cmdshell &lt;font color="#ff0000"&gt;'dir \\servername\sharename'&lt;/font&gt; and it allows us to see immediately whether the system can see that directory or not.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128594"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128594" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/128594.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/12/sql-2005-delegation-of-windows-account-how-to-access-file.aspx</guid>
            <pubDate>Mon, 12 Jan 2009 18:17:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/128594.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2009/01/12/sql-2005-delegation-of-windows-account-how-to-access-file.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/128594.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/128594.aspx</trackback:ping>
        </item>
        <item>
            <title>St. Louis Day of .NET</title>
            <category>.NET</category>
            <category>Personal</category>
            <category>Blogging</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/14/st.-louis-day-of-.net.aspx</link>
            <description>&lt;p&gt;Yesterday was the &lt;a href="http://www.stlouisdayofdotnet.com/"&gt;St. Louis Day of .NET&lt;/a&gt; event (hencefore I'll refer to STLDODN); it was a great success!.&lt;/p&gt;
&lt;p&gt;I was fortunate enough to be involved in this grand event; &lt;a href="http://www.notsotrivial.net/blog/"&gt;Clint Edmonson&lt;/a&gt; asked if I would be available to present some &lt;a href="http://www.microsoftpdc.com/"&gt;Microsoft PDC&lt;/a&gt; material, and I took that opportunity - even got to choose which topic to present.  I chose to do a presentation on Parallel Programming for Managed Code Developers.  Thanks for the chance, Clint.&lt;/p&gt;
&lt;p&gt;To make sure I'm well prepared, I also volunteered to present it at &lt;a href="http://kcdodn.eventbrite.com/"&gt;Kansas City Day of .NET&lt;/a&gt; last week.  I &lt;a href="http://geekswithblogs.net/NewThingsILearned/archive/2008/12/08/parallel-programming-presentation-materials.aspx"&gt;blogged about it&lt;/a&gt; and also provided my presentation materials/samples in that post.  I did not change my presentation materials, so slides &amp;amp; samples (both for VS2010 CTP and Parallel Extensions June CTP versions) are available in &lt;a href="http://geekswithblogs.net/NewThingsILearned/archive/2008/12/08/parallel-programming-presentation-materials.aspx"&gt;this post&lt;/a&gt;.  These materials will also be made available at the STLDODN website later on (after the people have some rest &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;).  &lt;/p&gt;
&lt;p&gt;In any case, it was an awesome day; some 200+ attendees came, presentations split into 6 tracks / rooms - got to meet some of my peers &amp;amp; friends there as well.  This event would not have happened without the heroic efforts of the 3 main organizers: &lt;a href="http://stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=5"&gt;Jeff Fattic&lt;/a&gt;, &lt;a href="http://geekswithblogs.net/kgrossnicklaus/Default.aspx"&gt;Kevin Grossnicklaus&lt;/a&gt; and &lt;a href="http://geekswithblogs.net/SSpradlin/Default.aspx"&gt;Scott Spradlin&lt;/a&gt; - kudos and my hats off to them in organizing all this into fruition.  Quite a bit of sponsors donated to this cause; and fun was had for everyone.&lt;/p&gt;
&lt;p&gt;For those that may have attended my presentation, can I get some feedback on the presentation?  I'm not sure what's the best way to do this yet; I guess commenting on this post (or the KC post) would be fine for the moment.  I'm always on the lookout as to what improvements that I can make to my presentation (slides / samples / materials) &amp;amp; my presentation skills so I can continue to be a better presenter.  I'm very new at this, and I am trying to make sure I learn as much as possible within the shortest amount of time - it's a long road to become a good presenter, so I need to run as fast as I can.&lt;/p&gt;
&lt;p&gt;I got to attend other sessions that are presented; I thought the &lt;a href="http://www.stlouisdayofdotnet.com/SessionDetail.aspx?SessionID=23"&gt;Developing Multi-Touch Applications&lt;/a&gt; session by Brian &lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=30"&gt;Blanchard&lt;/a&gt; was awesome.  He brought in an &lt;a href="http://www.shopping.hp.com/webapp/shopping/series_can.do?storeName=computer_store&amp;amp;landing=desktops&amp;amp;a1=Category&amp;amp;v1=All-in-One%20PCs"&gt;HP SmartTouch PC&lt;/a&gt;, which is a PC + Touch Screen combined, but the touch screen can recognize 2 touch areas (imagine like it can handle 2 mouse / 2 click events), and showed some cool stuff on utilizing the 2 touch areas to manipulate stuff - it's no &lt;a href="http://www.microsoft.com/SURFACE/index.html"&gt;Microsoft Surface&lt;/a&gt;, but to see something in action in front of me was great!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=2"&gt;Eric Brown&lt;/a&gt; provided &lt;a href="http://www.stlouisdayofdotnet.com/SessionDetail.aspx?SessionID=2"&gt;Open Source Solutions to Application Lifecyle Management&lt;/a&gt;, back-to-back with a session about &lt;a href="http://www.stlouisdayofdotnet.com/SessionDetail.aspx?SessionID=7"&gt;VSTS 2010&lt;/a&gt;, attendees could contrast the two approaches - it was interesting indeed.  &lt;a href="http://blog.christopherdeweese.com/"&gt;Chris Deweese&lt;/a&gt; did a session about &lt;a href="http://www.stlouisdayofdotnet.com/SessionDetail.aspx?SessionID=13"&gt;Oslo&lt;/a&gt;, and man Microsoft didn't make it easy on him; the tools and packages he had to work with was very, very early in development - he did his best though and focuses on how some development challenges can be solved using a Model-Driven development.&lt;/p&gt;
&lt;p&gt;At the end of yesterday, I was beat; unbelievably beat.  I think I was also very nervous the day before the event, thus earning me only 3 hours of sleep going into the event.  I slept like 14 hours before I woke up today; can't say that I'm fully refreshed yet, but I felt soooo much better at the moment &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;.  Regardless, cheers to everyone I got to see at the event, and let this first STLDODN become a sign of bigger things to come.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127893"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127893" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/127893.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/14/st.-louis-day-of-.net.aspx</guid>
            <pubDate>Sun, 14 Dec 2008 21:47:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/127893.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/14/st.-louis-day-of-.net.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/127893.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/127893.aspx</trackback:ping>
        </item>
        <item>
            <title>Parallel Programming presentation materials</title>
            <category>.NET</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/08/parallel-programming-presentation-materials.aspx</link>
            <description>&lt;p&gt;Kansas City hosted a &lt;a href="http://kcdodn.eventbrite.com/"&gt;Kansas City Day of .NET&lt;/a&gt; this past Saturday; I was fortunate enough to be given the opportunity by Lee Brandt to present there.  Wonderful time was had for all, food &amp;amp; drinks were provided along with some nice raffled items at the end.  Kudos to the 3 facilitators of this event: Lee Brandt, Becky Isserman and Doug Butscher.&lt;/p&gt;
&lt;p&gt;In any case, I was there presenting Parallel Programming for Managed Code Developers; essentially re-delivering &lt;a href="http://www.danielmoth.com/Blog/"&gt;Daniel Moth&lt;/a&gt;'s excellent &lt;a href="http://channel9.msdn.com/pdc2008/TL26/"&gt;PDC presentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those that may be interested, the PowerPoint to that presentation is &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/NewThingsILearned/Parallel Programming Presentation/Parallel Programming Presentation.zip"&gt;here&lt;/a&gt;, and the source code zip file is &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/NewThingsILearned/Parallel Programming Presentation/Parallel Programming PFX June CTP.zip"&gt;here&lt;/a&gt; (PFX June CTP version) or &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/NewThingsILearned/Parallel Programming Presentation/Parallel Programming VS2010 CTP.zip"&gt;here&lt;/a&gt; (VS2010 CTP version).  The difference between the 2 sources is that the June CTP has a different method for the Task/Future creation (Create vs. StartNew), otherwise everything else is the same.&lt;/p&gt;
&lt;p&gt;To run the executable, you need to either have the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3&amp;amp;displaylang=en"&gt;PFX June CTP&lt;/a&gt; installed, or run it in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;amp;displaylang=en"&gt;VS2010 CTP&lt;/a&gt; Virtual Machine - please make sure you get the proper version for your environment.  Please note that at the moment the only way to have the VS2010 CTP on the guest VM to recognize more than 1 processor is to run it under Windows Server 2008 Hyper-V.&lt;/p&gt;
&lt;p&gt;In my presentation, I walked through changing the code from single-threaded, to multi-thread, to multi-task, to using Future, to LINQ and eventually to demonstrate Parallel LINQ.  All the different codes are available in the Logic.cs file; that class has several ProcessColorsXXX method; the XXX defines the code methodology used (thread, task, etc.).&lt;/p&gt;
&lt;p&gt;I hope this is beneficial to others.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127742"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127742" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/127742.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/08/parallel-programming-presentation-materials.aspx</guid>
            <pubDate>Mon, 08 Dec 2008 20:14:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/127742.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/12/08/parallel-programming-presentation-materials.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/127742.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/127742.aspx</trackback:ping>
        </item>
        <item>
            <title>Displaying Rich-Formatted Text in WPF</title>
            <category>WPF</category>
            <category>.NET</category>
            <category>Windows</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/11/17/rich-formatted-text-messagebox-in-wpf.aspx</link>
            <description>&lt;p&gt;One project was put forth that essentially requires creating a MessageBox look-alike, but the text supports rich-format, and we can do it in WPF.  It's a pretty neat task, and in this post I'll focus on just the text side; the easiest way possible most probably is to just use a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextbox.aspx"&gt;RichTextBox control&lt;/a&gt;, make it to have no border, and everything will be fine.  However, I'd like to do it efficiently as well.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.aspx"&gt;FormattedText &lt;/a&gt;can be used; however it's hard to make it generic - essentially code has to be written to show the text in the desired font/color.  The &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.aspx"&gt;TextBlock class&lt;/a&gt; supports using some flow content elements, and it is described as very lightweight; so let's use that.  The sample provided shows the fact that it can display rich-formatted text:&lt;/p&gt;
&lt;p&gt;XAML for the Textblock (from MSDN sample):&lt;/p&gt;
&lt;p&gt;&lt;img height="76" alt="" width="530" src="/images/geekswithblogs_net/NewThingsILearned/TextBlock XAML.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;What the Textblock looks like (from MSDN sample):&lt;/p&gt;
&lt;p&gt;&lt;img height="59" alt="" width="271" src="/images/geekswithblogs_net/NewThingsILearned/TextBlock Display.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;This is fine when what you want to display resides in its own XAML; how about making it generic, where the consumer can specify the text to display, and also control the format/color/font size of the text - preferably also making the string to be available from resources?  Looking around, &lt;a href="http://msdn.microsoft.com/en-us/library/aa970917.aspx"&gt;RichTextBox has a sample&lt;/a&gt; on how to get its content and the decorations.  Using the same methodology it works, but the returned string looks rather convoluted:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style="WIDTH: 687px; HEIGHT: 822px" cellspacing="1" cellpadding="1" width="687" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p&gt;Code:&lt;span style="FONT-SIZE: 7pt"&gt; &lt;/span&gt;&lt;/p&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; GetTextBlockXAMLContent(&lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt; textBlock)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Get the content being displayed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: #2b91af"&gt;TextRange&lt;/span&gt; range = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextRange&lt;/span&gt;(textBlock.ContentStart, textBlock.ContentEnd);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Save the content to stream and get it back as byte array&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: #2b91af"&gt;MemoryStream&lt;/span&gt; stream = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;MemoryStream&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   range.Save(stream, &lt;span style="COLOR: #2b91af"&gt;DataFormats&lt;/span&gt;.Xaml);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;byte&lt;/span&gt;[] bytes = stream.ToArray();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Convert to character and rebuild it into a string&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: #2b91af"&gt;StringBuilder&lt;/span&gt; stringBuilder = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;StringBuilder&lt;/span&gt;(bytes.Length);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;char&lt;/span&gt;&amp;gt; chars = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;char&lt;/span&gt;&amp;gt;(bytes.Select(b =&amp;gt; &lt;span style="COLOR: #2b91af"&gt;Convert&lt;/span&gt;.ToChar(b)));&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   chars.ForEach(ch =&amp;gt; stringBuilder.Append(ch));&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; stringBuilder.ToString();&lt;/span&gt;&lt;/div&gt;
            &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Resulting string:&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Section&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt; xmlns&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt; xml:space&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt;preserve&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; TextAlignment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Left&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; LineHeight&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Auto&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; IsHyphenationEnabled&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt; xml:lang&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt;en-us&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FlowDirection&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;LeftToRight&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;User&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; NumberSubstitution.Substitution&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;AsCulture&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontFamily&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Tahoma&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontStyle&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontWeight&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontStretch&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontSize&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;11&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Foreground&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;#FF000000&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StandardLigatures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;True&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.ContextualLigatures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;True&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.DiscretionaryLigatures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.HistoricalLigatures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.AnnotationAlternates&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;0&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.ContextualAlternates&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;True&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.HistoricalForms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.Kerning&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;True&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.CapitalSpacing&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.CaseSensitiveForms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet1&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet2&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet3&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet4&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet5&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet6&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet7&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet8&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet9&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet10&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet11&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet12&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet13&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet14&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet15&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet16&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet17&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet18&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet19&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticSet20&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.Fraction&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.SlashedZero&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.MathematicalGreek&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.EastAsianExpertForms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.Variants&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.Capitals&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.NumeralStyle&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.NumeralAlignment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.EastAsianWidths&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.EastAsianLanguage&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Normal&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StandardSwashes&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;0&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.ContextualSwashes&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;0&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; Typography.StylisticAlternates&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;0&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; HasTrailingParagraphBreakOnPaste&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;False&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontWeight&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Bold&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;TextBlock&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;is designed to be&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontStyle&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;lightweight&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;, and is geared specifically at integrating&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt; FontStyle&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;small&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run NumberSubstitution.CultureSource&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Text&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;portions of flow content into a UI.&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Run&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 12pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Section&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Essentially all the properties are set out; it makes things very hard to read - this can be a problem when we want to store the string in the resource, since translators only need to translate the literal parts.  The text size grows as well, causing quite a bit of size addition.  Is there a better shorthand?  I found one by using the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlwriter.aspx"&gt;XamlWriter&lt;/a&gt; / &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader.aspx"&gt;XamlReader&lt;/a&gt; constructs.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="600" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;span style="COLOR: blue"&gt;object&lt;/span&gt; GetTextBlockXAMLContent(&lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt; textBlock)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Get the content being displayed&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; xaml = &lt;span style="COLOR: #2b91af"&gt;XamlWriter&lt;/span&gt;.Save(textBlock.Inlines);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;object&lt;/span&gt; o = &lt;span style="COLOR: #2b91af"&gt;XamlReader&lt;/span&gt;.Parse(xaml);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; o;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 6pt 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;However, when executing the code above, the &lt;a href="http://msdn.microsoft.com/en-us/library/cc663033.aspx"&gt;XamlReader.Parse&lt;/a&gt; method throws a XamlParseException: &lt;font face="Arial"&gt;Cannot create object of type 'System.Windows.Documents.InlineCollection'. CreateInstance failed, which can be caused by not having a public default constructor for 'System.Windows.Documents.InlineCollection'.  Error at Line 1 Position 2.  Apparently InlineCollection doesn't have a public default constructor.  Incidentally, the &lt;a href="http://msdn.microsoft.com/en-us/library/cc663033.aspx"&gt;XamlReader.Parse&lt;/a&gt; method is new to .NET 3.5 SP1 (it is also added to .NET 3.0 SP2).  So we have to change the code so it enumerates through all the inlines as follows:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style="WIDTH: 596px; HEIGHT: 63px" cellspacing="1" cellpadding="1" width="596" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p&gt;Code:&lt;/p&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; GetTextBlockXAMLContent(&lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt; textBlock)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Get the first inline&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: #2b91af"&gt;Inline&lt;/span&gt; content = textBlock.Inlines.FirstInline;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// If there are more than 1, then create a Span that&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// contains everything else&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (textBlock.Inlines.Count &amp;gt; 1)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   {&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      content = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Span&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      ((&lt;span style="COLOR: #2b91af"&gt;Span&lt;/span&gt;)content).Inlines.AddRange(textBlock.Inlines);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   }&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Get the XAML that represents the TextBlock content&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; xaml = content == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt; ? &lt;span style="COLOR: blue"&gt;null&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;XamlWriter&lt;/span&gt;.Save(content);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; xaml;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 6pt 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p&gt;XAML of the content:&lt;/p&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -24pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt; xmlns&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;="&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Verdana','sans-serif'"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Bold&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;TextBlock&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Bold&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;is designed to be &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;lightweight&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;, and is geared specifically at integrating &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 48pt; TEXT-INDENT: -24pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;small&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Italic&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;portions of flow content into a UI. &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt 24pt; TEXT-INDENT: -12pt"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #990000; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Span&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p&gt;Code to set TextBlock Content:&lt;/p&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; SetTextBlockXAMLContent(&lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt; textBlock, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; xaml)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Clear textblock content&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   textBlock.Inlines.Clear();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (xaml == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      &lt;span style="COLOR: blue"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   &lt;span style="COLOR: green"&gt;// Add xaml content&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;   textBlock.Inlines.Add(&lt;span style="COLOR: #2b91af"&gt;XamlReader&lt;/span&gt;.Parse(xaml) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Inline&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As you can see, the XAML content is fairly compact, makes it easier to translate &amp;amp; store. Based on the example above since the TextBlock has more than 1 element in it, we're just encapsulating it inside a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.span.aspx"&gt;Span&lt;/a&gt; element, and that element is the one that is then serialized as XAML.  The last piece is code to restore the XAML content to a TextBlock.  Some things to note: the method is fairly slow, if you make a sample to get a content of a TextBlock and assign that content to another TextBlock, the first time it runs you can see that the operation is not instantaneous.  TextBlock also accepts only Inlines; and won't be able to fully display a complex FlowDocument.  I hope this can be of some use to others.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127167"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127167" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/127167.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/11/17/rich-formatted-text-messagebox-in-wpf.aspx</guid>
            <pubDate>Mon, 17 Nov 2008 23:18:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/127167.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/11/17/rich-formatted-text-messagebox-in-wpf.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/127167.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/127167.aspx</trackback:ping>
        </item>
        <item>
            <title>Get return value from stored procedure</title>
            <category>.NET</category>
            <category>SQL</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/09/17/get-return-value-from-stored-procedure.aspx</link>
            <description>&lt;p&gt;&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 12px Arial; TEXT-TRANSFORM: none; COLOR: rgb(64,64,64); TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0"&gt;Recently we changed our DAC layer from using inline SQL to stored procedures in the database. On some of these SQL, we did record deletion (usually only 1 record), and we just execute it via &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.idbcommand.executenonquery.aspx"&gt;IDBCommand.ExecuteNonQuery()&lt;/a&gt; and then check the return value to see how many records were affected (which should be 1) for verification that the query actually does something. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 12px Arial; TEXT-TRANSFORM: none; COLOR: rgb(64,64,64); TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0"&gt;With the change to stored procedure, we just return 1 in the stored procedure if the delete is successful. However, the calling code then started to show these deletions as errors. Apparently ExecuteNonQuery only returns the number of affected rows on SELECT, INSERT and DELETE statements; for everything else it returns -1.  So I tried to figure out how to get a return value from a stored procedure.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 12px Arial; TEXT-TRANSFORM: none; COLOR: rgb(64,64,64); TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0"&gt;Let's assume a simplistic stored procedure as follows:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 12px Arial; TEXT-TRANSFORM: none; COLOR: rgb(64,64,64); TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0"&gt;
&lt;table cellspacing="1" cellpadding="1" width="200" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;ALTER&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;PROC&lt;/span&gt; ReturnOnly&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;AS&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;BEGIN&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;      &lt;span style="COLOR: blue"&gt;RETURN&lt;/span&gt; 5&lt;/span&gt;&lt;/div&gt;
            &lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;END&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 12px Arial; TEXT-TRANSFORM: none; COLOR: rgb(64,64,64); TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0"&gt;
&lt;p&gt;You can't use ExecuteScalar to get the returned value, and ExecuteNonQuery will always return -1.  To get the value back, you need to add a return value parameter to the command.  The name of the parameter is not important.  The code to get the value returned by that procedure will be as follows:
&lt;/p&gt;&lt;table style="WIDTH: 622px; HEIGHT: 23px" cellspacing="1" cellpadding="1" width="622" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; ExecuteStoredProcedure(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; storedProcedureName)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: #2b91af"&gt;SqlConnection&lt;/span&gt; connection = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SqlConnection&lt;/span&gt;(connectionString);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: green"&gt;// Command - specify as StoredProcedure&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: #2b91af"&gt;SqlCommand&lt;/span&gt; command = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SqlCommand&lt;/span&gt;(storedProcedureName, connection);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   command.CommandType = &lt;span style="COLOR: #2b91af"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: green"&gt;// Return value as parameter&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt; returnValue = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"returnVal"&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.Int);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   returnValue.Direction = &lt;span style="COLOR: #2b91af"&gt;ParameterDirection&lt;/span&gt;.ReturnValue;&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   command.Parameters.Add(returnValue);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="COLOR: green"&gt;    // Execute the stored procedure&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   connection.Open();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   command.ExecuteNonQuery();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   connection.Close();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;   &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Convert&lt;/span&gt;.ToInt32(returnValue.Value);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt; &lt;/p&gt;
&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125243"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125243" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/125243.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/09/17/get-return-value-from-stored-procedure.aspx</guid>
            <pubDate>Wed, 17 Sep 2008 16:57:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/125243.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/09/17/get-return-value-from-stored-procedure.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/125243.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/125243.aspx</trackback:ping>
        </item>
        <item>
            <title>Returning Cursor from Stored Procedure Executing Dynamic Query</title>
            <category>SQL</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/26/returning-cursor-from-stored-procedure-executing-dynamic-query.aspx</link>
            <description>I usually stay on the C# development of things, and rarely venture to create SQL statements/code, other than the occasional SELECT / UPDATE / INSERT.  However, we have a requirement from our Product Management group to DELETE records permanently from the database.  We have proper enforced foreign keys in our DB schema, so one option we have is to create a stored procedure to help deletion, which will walk thru the referencing foreign keys to the record being deleted and then also delete those records (the children records essentially).  Yes, I know records should not be deleted (it should just be marked as deleted or inactive or something), but it was a requirements insistence where my opinion was overridden.&lt;br /&gt;
&lt;br /&gt;
Having the stored procedure (hence I'll refer to this as sproc) is nice since consumer just need to call the same sproc passing in the table name &amp;amp; record id to delete, and the sproc will do the heavy lifting.  However, the sproc has some tasks to solve; since children records can contain further children records, the sproc needs to call itself recursively.  Since the sproc needs to query different tables (depending on which record is deleted), the sproc has to build dynamic SQL statements and execute that.  Since you need the values of the record Ids that references the parent (so it can see if those records have further children), you also need a CURSOR to loop thru those Ids).&lt;br /&gt;
&lt;br /&gt;
Separately, each of the problem is fairly simple enough, sprocs can call itself recursively, you can create sprocs that execute dynamic SQL, and you can have sprocs that has a CURSOR as OUTPUT.  However when you combine them together, I consider them to be a fairly neat challenge to try to tackle.  The hard part is actually with getting a CURSOR back from a dynamic SQL, so I'm going to focus on that part.&lt;br /&gt;
&lt;br /&gt;
To execute dynamic SQL, you need to use the built-in sp_executesql sproc in SQL Server.  The sp_executesql sproc can accept the following parameters:&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;The SQL statement that will be executed&lt;/li&gt;
    &lt;li&gt;The parameters &amp;amp; types that's needed by the SQL statement (#1) in text format&lt;/li&gt;
    &lt;li&gt;The actual parameters to use in that SQL statement&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
So, essentially sp_executesql will create a stored procedure, containing the SQL statement passed (#1), with the parameter list of that sproc as defined in #2 and then it will invoke that newly created stored procedure, passing in the parameters as defined in the latter parameters.&lt;br /&gt;
&lt;br /&gt;
To solve the problem, then we just need to create a dynamic SQL that has a CURSOR parameter which is an OUTPUT parameter.  The following test sproc demonstrates this:&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" border="1" align="" summary="" style="width: 692px; height: 828px;"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;ALTER&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;PROC&lt;/span&gt; TestProc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;DECLARE&lt;/span&gt; @dynamicSQL &lt;span style="color: blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;200&lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Have code that will construct the dynamic SQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;SET&lt;/span&gt; @dynamicSQL &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: red;"&gt;'SELECT FirstName FROM Contacts'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- The cursor that will be filled by the dynamic SQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;DECLARE&lt;/span&gt; @outputCursor &lt;span style="color: blue;"&gt;CURSOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Create the dynamic SQL to fill a CURSOR instead&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;SET&lt;/span&gt; @dynamicSQL &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: red;"&gt;'SET @outputCursor = CURSOR FORWARD_ONLY STATIC FOR '&lt;/span&gt; &lt;span style="color: gray;"&gt;+&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;@dynamicSQL &lt;span style="color: gray;"&gt;+&lt;/span&gt; &lt;span style="color: red;"&gt;' ; OPEN @outputCursor'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Execute dynamic sql&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;exec&lt;/span&gt; &lt;span style="color: maroon;"&gt;sp_executesql&lt;/span&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: green;"&gt;-- sp_executesql will essentially create a sproc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;@dynamicSQL&lt;span style="color: gray;"&gt;,&lt;/span&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: green;"&gt;-- The SQL statement to execute (body of sproc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;N&lt;span style="color: red;"&gt;'@outputCursor CURSOR OUTPUT'&lt;/span&gt;&lt;span style="color: gray;"&gt;,&lt;/span&gt; &lt;span style="color: green;"&gt;-- The parameter list for the sproc: OUTPUT CURSOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;@outputCursor &lt;span style="color: blue;"&gt;OUTPUT&lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: green;"&gt;-- The parameter to pass to the sproc: the CURSOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Code that will just output the values from the cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;DECLARE&lt;/span&gt; @firstName &lt;span style="color: blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;200&lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;FETCH&lt;/span&gt; &lt;span style="color: blue;"&gt;NEXT&lt;/span&gt; &lt;span style="color: blue;"&gt;FROM&lt;/span&gt; @outputCursor &lt;span style="color: blue;"&gt;INTO&lt;/span&gt; @firstName&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Loop while there're more things in the cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;WHILE&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;@@FETCH_STATUS&lt;/span&gt; &lt;span style="color: gray;"&gt;=&lt;/span&gt; 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;&lt;span style="color: blue;"&gt;PRINT&lt;/span&gt; @firstName&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;              &lt;/span&gt;&lt;span style="color: blue;"&gt;FETCH&lt;/span&gt; &lt;span style="color: blue;"&gt;NEXT&lt;/span&gt; &lt;span style="color: blue;"&gt;FROM&lt;/span&gt; @outputCursor &lt;span style="color: blue;"&gt;INTO&lt;/span&gt; @firstName&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: green;"&gt;-- Be nice, close &amp;amp; deallocate cursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;CLOSE&lt;/span&gt; @outputCursor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style="color: blue;"&gt;DEALLOCATE&lt;/span&gt; @outputCurso&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;r&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
I just choose to use a simple SELECT to a table as the dynamic SQL statement; you can make it to be whatever SELECT is needed based on parameter being passed.  Then the sproc declares a CURSOR, which will then be used to contain the result of the SQL statement.  The whole text, including the CURSOR is the dynamic SQL we want to execute.  sp_executesql is then called with the SQL statement, we then define the statement to have 1 parameter (which is the CURSOR as an OUTPUT parameter), and then we pass in the cursor as the object to pass into the dynamic SQL to be executed.  The latter half of the code just loops thru the cursor to proof that the results are proper.&lt;br /&gt;
&lt;br /&gt;
Not having dealt with much SQL code, this was an interesting journey for me.  There are other ways to solve the problem (DELETE records), we can use cascade delete, but it doesn't support self-referencing tables.  In the end we didn't use this approach, instead we just create a sproc for each table that needs to be deleted; it seems like a heck of a lot of maintenance job, but I'll let the DBA handle that.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124699"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124699" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/124699.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/26/returning-cursor-from-stored-procedure-executing-dynamic-query.aspx</guid>
            <pubDate>Tue, 26 Aug 2008 16:49:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/124699.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/26/returning-cursor-from-stored-procedure-executing-dynamic-query.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/124699.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/124699.aspx</trackback:ping>
        </item>
        <item>
            <title>Refresh / Update WPF controls</title>
            <category>WPF</category>
            <category>.NET</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/25/refresh--update-wpf-controls.aspx</link>
            <description>Sometime in the past, a friend asked me how to update a control to show status while his code is doing a loop of stuff.  Essentially changing the text of a label (or sophisticatedly we can say a text-based progress bar).  In my past coding with MFC and WinForms, it's fairly easy enough, you just invalidate and do an update (Invalidate / UpdateWindow in MFC or Invalidate / Update in WinForms).  This approach also coincides with how Windows UI operate, where you specify the region that needs to be redrawn and then you send a message to the message pump for that control to paint itself.&lt;br /&gt;
&lt;br /&gt;
So, I expected something similar (if not exactly the same) to also be present in WPF; much to my surprise, there is no equivalent.   All my internet searches actually shows how to do this using background thread - it is the approach that needs to be taken in a proper programming context, however there are times when you just want to do something quick &amp;amp; dirty or you want to augment an existing app / port where you don't want to introduce new elements.  There are also considerations to be made when both UI and worker thread access the same data, especially with regard to data binding (see &lt;a href="http://geekswithblogs.net/NewThingsILearned/archive/2008/01/16/have-worker-thread-update-observablecollection-that-is-bound-to-a.aspx"&gt;my post &lt;/a&gt;about collection change not supporting multi-threading out of the box).&lt;br /&gt;
&lt;br /&gt;
So, I've decided to add a helper method to refresh a WPF control.  I really appreciated the Refresh method in WinForms (which executes both Invalidate &amp;amp; Update), so I'm renaming my method to be Refresh as well.  The code snippet below also show some C# specific techniques, namely: anonymous delegates and extension methods.&lt;br /&gt;
&lt;br /&gt;
&lt;table width="600" cellspacing="1" cellpadding="1" border="1" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;public&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ExtensionMethods&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Action&lt;/span&gt; EmptyDelegate = &lt;span style="color: blue;"&gt;delegate&lt;/span&gt;() { };&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt; &lt;/div&gt;
            &lt;p style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Refresh(&lt;span style="color: blue;"&gt;this&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;UIElement&lt;/span&gt; uiElement)&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   {&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;      uiElement.Dispatcher.Invoke(&lt;span style="color: rgb(43, 145, 175);"&gt;DispatcherPriority&lt;/span&gt;.Render, EmptyDelegate);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   }&lt;/span&gt;&lt;/div&gt;
            &lt;div&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;private&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; LoopingMethod()&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10; i++)&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   {&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;      label1.Content = i.ToString();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;      label1.Refresh();&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;      &lt;span style="color: rgb(43, 145, 175);"&gt;Thread&lt;/span&gt;.Sleep(500);&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   }&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
The LoopingMethod is just the method I use in my Window class to update the label (updating the progress) and then the code does some heavy lifting (Sleep &lt;img src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" alt="" /&gt;).  The Refresh method is the extension method that takes any UI element and then calls that UIElement's Dispatcher's Invoke method.  The trick is to call the Invoke method with DispatcherPriority of Render or lower.  Since we don't want to do anything, I created an empty delegate.  So how come this achieves refresh functionality?&lt;br /&gt;
&lt;br /&gt;
When the DispatcherPriority is set to Render (or lower), the code will then execute all operations that are of that priority or higher.  In the example, the code already sets label1.Content to something else, which will result in a render operation.  So by calling Dispatcher.Invoke, the code essentially asks the system to execute all operations that are Render or higher priority, thus the control will then render itself (drawing the new content).  Afterwards, it will then execute the provided delegate (which is our empty method).&lt;br /&gt;
&lt;br /&gt;
Pretty weird; there was a post somewhere in my google search that led me this route, and I was surprised as to how it worked.  I couldn't find it anymore, but credit where credit is due, someone else figured out that Invoke-ing a Render or lower priority task will result in the UI being redrawn.&lt;/p&gt;
&lt;p&gt;Update (January 20, 2009):&lt;/p&gt;
&lt;p&gt;A Commenter asked for a full sample, so I've uploaded one &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/NewThingsILearned/20090120/WPFRefresh.zip"&gt;here&lt;/a&gt;.  I don't speak Spanish, but &lt;a href="http://translate.google.com/"&gt;Google translator&lt;/a&gt; was working great!&lt;/p&gt;
Update (February 26, 2009):&lt;br /&gt;
&lt;br /&gt;
A Commenter asked for a VB.NET sample, so I've uploaded one &lt;a href="/images/geekswithblogs_net/NewThingsILearned/20090226/TestUpdate.zip"&gt;here&lt;/a&gt;.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124665"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124665" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/124665.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/25/refresh--update-wpf-controls.aspx</guid>
            <pubDate>Mon, 25 Aug 2008 15:22:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/124665.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/25/refresh--update-wpf-controls.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/124665.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/124665.aspx</trackback:ping>
        </item>
        <item>
            <title>Calling Generic Method when given a type</title>
            <category>.NET</category>
            <link>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/22/calling-generic-method-when-given-a-type.aspx</link>
            <description>Every now and then I have a need to call a generic method, but I can't quite call it generically.  Usually that particular situation involves needing to call a generic method, and I have the type for that generic method.  There are various reasons/examples of why anyone would get to this point, in my case we have an infrastructure code that can deal with objects generically, but  because it is infrastructure code, we can't have it refer to the actual entity classes that are in the higher layer/tier.&lt;br /&gt;
&lt;br /&gt;
However, if we only have the type, we can't just call the method as is, we have to call it via reflection.  And as much as I like reflection, it has some drawbacks.  Consider the following snippet:&lt;br /&gt;
&lt;table width="600" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; InvokeGenericMethod(&lt;span style="color: blue;"&gt;object&lt;/span&gt; o)&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;MethodInfo&lt;/span&gt; mi = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetType().GetMethod(&lt;span style="color: rgb(163, 21, 21);"&gt;"MyGenericTestMethod"&lt;/span&gt;, &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.DeclaredOnly | &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.Instance);&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   mi = mi.MakeGenericMethod(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Type&lt;/span&gt;[] { o.GetType() });&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   mi.Invoke(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;[] { o });&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt; &lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;private&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; MyGenericTestMethod&amp;lt;T&amp;gt;(T value)&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: blue;"&gt;return&lt;/span&gt; value.GetType().ToString();&lt;/span&gt;&lt;/p&gt;
            &lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
To call the method (it is private), I have to call Type.GetMethod with some not very nice looking parameters.  The name supplied is in quotes; as such if the actual method name is changed, this code will still compile, it'll just crash when actually ran.  Mind you, the code works; it's just not very maintenance-friendly.&lt;br /&gt;
&lt;br /&gt;
A trick I use for this then is to use delegates as follows:
&lt;table width="600" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; InvokeGenericMethod(&lt;span style="color: blue;"&gt;object&lt;/span&gt; o)&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; temp = MyGenericTestMethod&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: rgb(43, 145, 175);"&gt;MethodInfo&lt;/span&gt; mi = temp.Method.GetGenericMethodDefinition();&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   mi = mi.MakeGenericMethod(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Type&lt;/span&gt;[] { o.GetType() });&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   mi.Invoke(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;[] { o });&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt; &lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;private&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; MyGenericTestMethod&amp;lt;T&amp;gt;(T value)&lt;/span&gt;&lt;/p&gt;
            &lt;div style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;   &lt;span style="color: blue;"&gt;return&lt;/span&gt; value.GetType().ToString();&lt;/span&gt;&lt;/p&gt;
            &lt;div&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
By using delegates, I no longer need to use reflections to get the method to call; I just point to the method as a delegate, and then create a generic method definition from that delegate.  Everything after that is still the same.  One nice benefit to this is if the method name is changed, the refactoring engine will also change the delegate reference, and if it doesn't the code will fail at compile-time.  Nicer, cleaner looking code as well, IMHO.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124628"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124628" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/NewThingsILearned/aggbug/124628.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Muljadi Budiman</dc:creator>
            <guid>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/22/calling-generic-method-when-given-a-type.aspx</guid>
            <pubDate>Fri, 22 Aug 2008 14:41:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/NewThingsILearned/comments/124628.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/NewThingsILearned/archive/2008/08/22/calling-generic-method-when-given-a-type.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/NewThingsILearned/comments/commentRss/124628.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/NewThingsILearned/services/trackbacks/124628.aspx</trackback:ping>
        </item>
    </channel>
</rss>