<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eclipsed4utoo&#039;s Blog&#187; .Net</title>
	<atom:link href="http://eclipsed4utoo.com/blog/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://eclipsed4utoo.com/blog</link>
	<description>Not Your Ordinary Programmer</description>
	<lastBuildDate>Fri, 23 Jul 2010 18:10:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Silverlight 4 &#8211; Creating a Custom Modal Dialog</title>
		<link>http://eclipsed4utoo.com/blog/silverlight-4-creating-custom-modal-dialog/</link>
		<comments>http://eclipsed4utoo.com/blog/silverlight-4-creating-custom-modal-dialog/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 06:30:26 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[blend]]></category>
		<category><![CDATA[modal dialog]]></category>
		<category><![CDATA[Silverlight 4]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=380</guid>
		<description><![CDATA[For a Silverlight application I did recently, I wanted to do a custom modal dialog box for showing informational messages, error messages, or other messages to the user.  This dialog box would have no title bar or &#8220;X&#8221; button, and would have rounded corners.
For this tutorial, we will use Blend 4 to accomplish our task.
First, [...]]]></description>
			<content:encoded><![CDATA[<p>For a Silverlight application I did recently, I wanted to do a custom modal dialog box for showing informational messages, error messages, or other messages to the user.  This dialog box would have no title bar or &#8220;X&#8221; button, and would have rounded corners.</p>
<p>For this tutorial, we will use Blend 4 to accomplish our task.</p>
<p>First, create a new Silverlight 4 application.  I named mine <strong>CustomDialog</strong>.</p>
<p><img class="alignnone size-full wp-image-381" title="Image1" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image1.png" alt="Image1" width="548" height="468" /></p>
<p>Once the project has been created, we are going to add a new item to our Silverlight project.  This item will be a <strong>ChildWindow</strong>.  I named mine <strong>DialogPopup</strong>.</p>
<p><img class="alignnone size-full wp-image-382" title="Image2" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image2.png" alt="Image2" width="390" height="427" /></p>
<p>The <strong>ChildWindow </strong>will handle the modal dialog part of our window.  However, there are parts of the <strong>ChildWindow </strong>that I didn&#8217;t like and wanted to remove/change, such as the window chrome.  I also wanted to round the corners of the window.   To do this, we need to edit the template for the window.  In the <strong>Objects and Timeline</strong> window, right-click on the <strong>ChildWindow </strong>parent &#8211;&gt; <strong>Edit Template</strong> &#8211;&gt; <strong>Edit a Copy</strong>&#8230;</p>
<p><img class="alignnone size-full wp-image-383" title="Image3" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image3.png" alt="Image3" width="457" height="495" /></p>
<p>We are going to keep it simple and save the new style to the ChildWindow document.</p>
<p><img class="alignnone size-full wp-image-384" title="Image4" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image4.png" alt="Image4" width="459" height="249" /></p>
<p>So first, we are just going to delete the window chrome from the window.  The window chrome is the title bar and the &#8220;X&#8221; used to close the window.  Drill-down in the treeview until you find the <strong>Chrome </strong>entry.  Right-click, and choose <strong>Delete</strong>.</p>
<p><img class="alignnone size-full wp-image-385" title="Image5" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image5.png" alt="Image5" width="437" height="391" /></p>
<p>Next, we need to delete some of the Borders.  These give the window a grey border that I didn&#8217;t want.</p>
<p><img class="alignnone size-full wp-image-402" title="Image11" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image11.png" alt="Image11" width="431" height="373" /></p>
<p>Next, we are going to round the corners of the window.  Drill-down and click on the <strong>Border </strong>shown below.</p>
<p><img class="alignnone size-full wp-image-405" title="Image12" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image12.png" alt="Image12" width="290" height="244" /></p>
<p>In the <strong>Properties </strong>window, set the <strong>CornerRadius </strong>to <strong>20</strong>.</p>
<p><img class="alignnone size-full wp-image-387" title="Image7" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image7.png" alt="Image7" width="275" height="192" /></p>
<p>Move down to the next <strong>Border</strong>,</p>
<p><img class="alignnone size-full wp-image-406" title="Image13" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image13.png" alt="Image13" width="302" height="249" /></p>
<p>And set it&#8217;s <strong>CornerRadius </strong>to <strong>20</strong>.</p>
<p><img class="alignnone size-full wp-image-389" title="Image9" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image9.png" alt="Image9" width="271" height="177" /></p>
<p>With the same <strong>Border </strong>selected, in the Properties window, set the <strong>Background Brush</strong> to a color of your choice.</p>
<p><img class="alignnone size-full wp-image-390" title="Image10" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image10.png" alt="Image10" width="270" height="391" /></p>
<p>The window &#8220;jazz&#8221; is now complete.  Next, we are going to move to the XAML.</p>
<p>First, we need to give our window a name so we can handle binding.  I named mine <strong>myCustomPopup</strong>.</p>
<pre class="brush: xml;">
&lt;sdk:ChildWindow
   xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
   xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
   xmlns:sdk=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&quot;
   x:Class=&quot;CustomDialog.DialogPopup&quot;
   x:Name=&quot;myCustomPopup&quot;
   Title=&quot;DialogPopup&quot;
   Width=&quot;400&quot; Height=&quot;300&quot;&gt;
</pre>
<p>Now we need to add a <strong>TextBlock </strong>to the window to hold our message.</p>
<pre class="brush: xml;">
&lt;TextBlock
    Text=&quot;{Binding Message, ElementName=myCustomPopup}&quot;
    Margin=&quot;51,88,57,113&quot;
    TextWrapping=&quot;Wrap&quot;
    Foreground=&quot;#FF1D1515&quot;
    FontWeight=&quot;Bold&quot;
    TextAlignment=&quot;Center&quot;/&gt;
</pre>
<p>You may notice that we are binding to a property called <strong>Message</strong>.  This is a custom <strong>DependencyProperty </strong>that will correspond to a public property that we will set when we create an instance of the window.</p>
<pre class="brush: csharp;">
/// &lt;summary&gt;
/// Creates a public property for the TextBlock to bind to
/// &lt;/summary&gt;
public static DependencyProperty MessageProperty = DependencyProperty.Register(&quot;Message&quot;, typeof(string), typeof(DialogPopup), new PropertyMetadata(&quot;&quot;));
public string Message
{
     get { return (string)GetValue(MessageProperty); }
     set { SetValue(MessageProperty, value); }
}
</pre>
<p>This will complete our work for the window.  To show off the new window, lets add a <strong>Button </strong>to the <strong>MainPage.xaml</strong>, create an <strong>EventHandler </strong>for the <strong>Click </strong>event.</p>
<pre class="brush: xml;">
&lt;Grid
   x:Name=&quot;LayoutRoot&quot;
   Background=&quot;White&quot;&gt;

     &lt;Button
        x:Name=&quot;btnShowMessage&quot;
        Content=&quot;Click Me&quot;
        Click=&quot;btnShowMessage_Click&quot;
        Margin=&quot;251,207,289,236&quot;  /&gt;
&lt;/Grid&gt;
</pre>
<p>And the code for the <strong>Click </strong>event&#8230;</p>
<pre class="brush: csharp;">
private void btnShowMessage_Click(object sender, System.Windows.RoutedEventArgs e)
{
     DialogPopup dialog = new DialogPopup();
     dialog.Message = &quot;Our message&quot;;
     dialog.Show();
}
</pre>
<p>And that will complete our tutorial.  Run the application from Blend using <strong>F5</strong>, and you should see this..</p>
<p><img class="alignnone size-full wp-image-408" title="Image14" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/Image14.png" alt="Image14" width="699" height="520" /></p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/silverlight-4-creating-custom-modal-dialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 4 &#8211; Publishing Application to Remote Server</title>
		<link>http://eclipsed4utoo.com/blog/silverlight-4-publishing-application-remote-server/</link>
		<comments>http://eclipsed4utoo.com/blog/silverlight-4-publishing-application-remote-server/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 21:30:24 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[.net 4]]></category>
		<category><![CDATA[RIA Services]]></category>
		<category><![CDATA[Silverlight 4]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WCF RIA Services]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=366</guid>
		<description><![CDATA[This blog post will talk about the steps needed to publish a Silverlight 4 applications that uses WCF RIA Services for communication.  There were a number of issues that I ran into trying to publish, so I decided to do a blog post to keep other&#8217;s from having to search and hunt for the fixes.
NOTE: [...]]]></description>
			<content:encoded><![CDATA[<p>This blog post will talk about the steps needed to publish a Silverlight 4 applications that uses WCF RIA Services for communication.  There were a number of issues that I ran into trying to publish, so I decided to do a blog post to keep other&#8217;s from having to search and hunt for the fixes.</p>
<p><span style="color: #ff0000;"><strong>NOTE:  These steps are for IIS running on Windows Server 2003 SP2.  Steps may be different for other versions of IIS.</strong></span></p>
<p>1.  First, you will need to fix your web.config file as I have noted in<a href="http://eclipsed4utoo.com/blog/wcf-ria-services-error-moving-service-server/" target="_blank"> this blog post</a>.  This is not added by default.</p>
<p>2. (<strong><span style="color: #ff0000;">Optional</span></strong>) If you are running a .Net 2.0 or .Net 3.5 website on this same server, you will need to create a new AppPool in IIS.  This is required because an AppPool can only run one version of the .Net CLR.  With .Net 4, Microsoft created a new CLR.  Therefore, you will need an AppPool for the .Net 2.0 and .Net 3.5 websites, and an AppPool for the .Net 4 websites.  <strong>NOTE</strong>:  This may have changed in later versions of IIS.</p>
<p>3.  Next, in Visual Studio 2010, you will need to set a number of the references of the .Web project to Copy to Local.  I had to do it for all of the <strong>System.ServiceModel</strong> references.  You may not have all of these references, and that is fine.</p>
<p><img class="alignnone size-full wp-image-370" title="SLImage4" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/SLImage4.png" alt="SLImage4" width="377" height="111" /></p>
<p>Then go to the <strong>Properties </strong>window, and set <strong>Copy Local</strong> equal to <strong>True</strong>.</p>
<p><img class="alignnone size-full wp-image-371" title="SLImage5" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/SLImage5.png" alt="SLImage5" width="296" height="183" /></p>
<p>4.  Next, you need to add a new MIME type for both the <strong>.XAP</strong> extension and the <strong>.XAML</strong> extension.</p>
<p>Open the IIS Management console.  Drill-down until you get to your domain/default website.  Right-click and click <strong>Properties</strong>.<br />
<img class="alignnone size-full wp-image-367" title="SLImage1" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/SLImage1.png" alt="SLImage1" width="282" height="408" /></p>
<p>Next, go to the <strong>HTTP Headers</strong> tab, then click on the <strong>Mime Types&#8230;</strong> button.<br />
<img class="alignnone size-full wp-image-368" title="SLImage2" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/SLImage2.png" alt="SLImage2" width="472" height="456" /></p>
<p>Now add the two new mime types..<br />
<img class="alignnone size-full wp-image-369" title="SLImage3" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/07/SLImage3.png" alt="SLImage3" width="344" height="367" /></p>
<p>Now simply publish your web project to your server, and you should be ready to go.</p>
<p><strong>NOTE</strong>: This blog post does not talk about creating a Virtual Directory or making the Virtual Directory an application.  There are plenty of other blog posts that can walk you through that.  However, make sure the Virtual Directory is set to the AppPool for .Net 4(if it was required for your setup).</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/silverlight-4-publishing-application-remote-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF RIA Services &#8211; Error When Moving Service To Server</title>
		<link>http://eclipsed4utoo.com/blog/wcf-ria-services-error-moving-service-server/</link>
		<comments>http://eclipsed4utoo.com/blog/wcf-ria-services-error-moving-service-server/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 21:40:45 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[RIA Services]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=356</guid>
		<description><![CDATA[I recently tried publishing a WCF RIA Service to my server, and came across an error.  I was using all the latest Windows Phone 7 and RIA Services Tools, and targeting the .Net 4 framework.  However, since I have both .Net 3.5 and .Net 4 installed on my server, I ran into this error&#8230;

&#8220;System.Configuration.ConfigurationErrorsException: The [...]]]></description>
			<content:encoded><![CDATA[<p>I recently tried publishing a WCF RIA Service to my server, and came across an error.  I was using all the latest Windows Phone 7 and RIA Services Tools, and targeting the .Net 4 framework.  However, since I have both .Net 3.5 and .Net 4 installed on my server, I ran into this error&#8230;</p>
<p><img class="alignnone size-full wp-image-359" title="WCFError1" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/06/WCFError1.PNG" alt="WCFError1" width="1254" height="624" /></p>
<p><strong><em>&#8220;System.Configuration.ConfigurationErrorsException: The value for the &#8216;compilerVersion&#8217; attribute in the provider options must be &#8216;v4.0&#8242; or later if you are compiling for version 4.0 or later of the .NET Framework. To compile this Web application for version 3.5 or earlier of the .NET Framework, remove the &#8216;targetFramework&#8217; attribute from the &lt;compilation&gt; element of the Web.config file.&#8221;</em></strong></p>
<p>It threw me for a loop because it worked fine in Visual Studio 2010 when testing on my development PC, but when moving it to the server, it had this problem.</p>
<p>The fix was fairly easy, once I was able to find it.  Basically, you need to add the a section to the web.config that doesn&#8217;t get added when adding the RIA Services DomainService to the project.</p>
<pre>
<pre class="brush: xml;">
&lt;system.codedom&gt;
  &lt;compilers&gt;
     &lt;compiler language=&quot;c#;cs;csharp&quot; extension=&quot;.cs&quot; warningLevel=&quot;4&quot; type=&quot;Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&quot;&gt;
       &lt;providerOption name=&quot;CompilerVersion&quot; value=&quot;v4.0&quot; /&gt;
       &lt;providerOption name=&quot;WarnAsError&quot; value=&quot;false&quot; /&gt;
     &lt;/compiler&gt;
  &lt;/compilers&gt;
&lt;/system.codedom&gt;
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/wcf-ria-services-error-moving-service-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Dynamically Loading LINQ-To-SQL Tables and Columns Into ComboBox</title>
		<link>http://eclipsed4utoo.com/blog/wpf-loading-linqtosql-tables-columns-combobox/</link>
		<comments>http://eclipsed4utoo.com/blog/wpf-loading-linqtosql-tables-columns-combobox/#comments</comments>
		<pubDate>Tue, 25 May 2010 22:00:21 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LINQ-To-SQL]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=338</guid>
		<description><![CDATA[Here is some code to dynamically load the table names into a ComboBox.  Then on the selection of a specific table, load the columns for that table into a second ComboBox.
First is the XAML:
&#60;Window x:Class="WpfApplication4.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="MainWindow" Height="350" Width="525"&#62;    &#60;Grid&#62;        &#60;ComboBox [...]]]></description>
			<content:encoded><![CDATA[<p>Here is some code to dynamically load the table names into a ComboBox.  Then on the selection of a specific table, load the columns for that table into a second ComboBox.</p>
<p>First is the XAML:</p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #000088; padding: 0px; margin: 0px;">&lt;Window</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">x:Class</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"WpfApplication4.MainWindow"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns:x</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/winfx/2006/xaml"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #660066; padding: 0px; margin: 0px;">Title</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"MainWindow"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"350"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">Width</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"525"</span><span style="color: #000088; padding: 0px; margin: 0px;">&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;Grid&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;ComboBox</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"cboTables"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"23"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">HorizontalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Left"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Margin</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"186,60,0,0"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">VerticalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Top"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Width</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"120"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">ItemsSource</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"{Binding}"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Selectionchanged</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"cboTables_Selectionchanged"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">DisplayMemberPath</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"RowType.Name"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">SelectedValuePath</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"RowType.DataMembers"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #000088; padding: 0px; margin: 0px;">/&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        <br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;ComboBox</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"23"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">HorizontalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Left"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Margin</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"186,107,0,0"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"cboColumns"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">VerticalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Top"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Width</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"120"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">ItemsSource</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"{Binding}"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">DisplayMemberPath</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"MappedName"</span><span style="color: #000088; padding: 0px; margin: 0px;">/&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;Label</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"label1"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Content</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Tables:"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"28"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">HorizontalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Left"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Margin</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"134,60,0,0"</span><span style="color: #000000; padding: 0px; margin: 0px;">  <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">VerticalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Top"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #000088; padding: 0px; margin: 0px;">/&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;Label</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"label2"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Content</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Columns:"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"28"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">HorizontalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Left"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Margin</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"121,107,0,0"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">VerticalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Top"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #000088; padding: 0px; margin: 0px;">/&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;/Grid&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;/Window&gt;</span></pre>
<p>Notice that we have set the <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">ItemsSource</span> attribute to <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">{Binding}</span>. This lets the control know that we are binding data to the control(big surprise). Notice that I have also set the<span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">DisplayMemberPath</span> and <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">SelectedValuePath</span> in the Tables ComboBox and the<span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">DisplayMemberPath</span> in the Columns ComboBox.</p>
<p>Next is the code:</p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Collections</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ObjectModel</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Windows</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Windows</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Controls</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">namespace</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">WpfApplication4</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">/// &lt;summary&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">/// Interaction logic for Mainwindow.xaml</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">/// &lt;/summary&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">partial</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">class</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainWindow</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">:</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">Window</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainWindow</span><span style="color: #999900; padding: 0px; margin: 0px;">()</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #990099; padding: 0px; margin: 0px;">InitializeComponent</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">this</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Loaded</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">+=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventHandler</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">MainWindow_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">);</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">void</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainWindow_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> sender</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> e</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">// creates a new instance of our DataContext</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">InformationDataContext</span><span style="color: #000000; padding: 0px; margin: 0px;"> db </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">InformationDataContext</span><span style="color: #999900; padding: 0px; margin: 0px;">())</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #008200; padding: 0px; margin: 0px;">// gets the list of tables</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">var</span><span style="color: #000000; padding: 0px; margin: 0px;"> tableList </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> db</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Mapping</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetTables</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                cboTables</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ItemsSource</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> tableList</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">private</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">void</span><span style="color: #000000; padding: 0px; margin: 0px;"> cboTables_Selectionchanged</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> sender</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">SelectionchangedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> e</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            cboColumns</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ItemsSource</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> cboTables</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">SelectedValue</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">as</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">ReadOnlyCollection</span><span style="color: #999900; padding: 0px; margin: 0px;">&lt;</span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Data</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Linq</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Mapping</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">MetaDataMember</span><span style="color: #999900; padding: 0px; margin: 0px;">&gt;;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
<p>We use the <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">GetTables</span> method of the DataContext class to get the list of tables. The objects themselves are of type <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">System.Data.Linq.Mapping.AttributedMetaTable</span>. Two properties of this class are <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">RowType.Name</span> and <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">RowType.DataMembers</span>. The <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">RowType.Name</span> is the name of the table without the &#8220;dbo&#8221; in front. The <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">RowType.DataMembers</span> is a list of the columns of that table.<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />The <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">RowType.DataMembers</span> objects are of type <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">System.Data.Linq.Mapping.MetaDataMember</span>. One property of this class is the <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">MappedName</span> property that we are using as the <span style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; color: #000000; font-family: monospace !important; background-position: initial initial; background-repeat: initial initial; padding: 2px; margin: 0px; border: 1px dotted #000000;">DisplayMemberPath</span>. This gives us the name of the column without any extra data.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/wpf-loading-linqtosql-tables-columns-combobox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Create Animation Programmatically</title>
		<link>http://eclipsed4utoo.com/blog/wpf-create-animation-programmatically/</link>
		<comments>http://eclipsed4utoo.com/blog/wpf-create-animation-programmatically/#comments</comments>
		<pubDate>Thu, 20 May 2010 22:00:48 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[storyboard]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=332</guid>
		<description><![CDATA[This is a short code snippet on creating an animation in WPF through code.
In my Twitter app that I have been working on, I was recently doing some optimizations.  When I first did the app, I was new to WPF and knew nothing about animations.  After spending time in Silverlight, I used that knowledge to [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short code snippet on creating an animation in WPF through code.</p>
<p>In my <a href="http://eclipsed4utoo.com/blog/twiteclipse-twitter-desktop-client/" target="_blank">Twitter</a> app that I have been working on, I was recently doing some optimizations.  When I first did the app, I was new to WPF and knew nothing about animations.  After spending time in Silverlight, I used that knowledge to do some animations in WPF.</p>
<p>I wanted to do simple &#8220;fade-in&#8221; and &#8220;fade-out&#8221; animations when removing tweets from view and adding new tweets to the view.   And being the person that I am, I like doing this stuff in code.  While I like XAML a lot, I still like writing the code.  So here is how to do an animation that changes the Opacity property programmatically.</p>
<pre class="brush: csharp;">
// because I am doing these as extension methods, they
//   will be available to all UIElement objects, which are
//   basically all controls that can be added to the GUI
public static class ControlAnimationExtensionMethods
{
    public static void FadeIn(this UIElement targetControl)
    {
        DoubleAnimation fadeInAnimation = new DoubleAnimation(0, 1, new Duration(TimeSpan.FromSeconds(1.5)));
        Storyboard.SetTarget(fadeInAnimation, targetControl);
        Storyboard.SetTargetProperty(fadeInAnimation, new PropertyPath(UIElement.OpacityProperty));
        Storyboard sb = new Storyboard();
        sb.Children.Add(fadeInAnimation);
        sb.Begin();
    }

    public static void FadeOut(this UIElement targetControl)
    {
        DoubleAnimation fadeInAnimation = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(1.5)));
        Storyboard.SetTarget(fadeInAnimation, targetControl);
        Storyboard.SetTargetProperty(fadeInAnimation, new PropertyPath(UIElement.OpacityProperty));
        Storyboard sb = new Storyboard();
        sb.Children.Add(fadeInAnimation);
        sb.Begin();
    }
}
</pre>
<p>This code is useful when dynamically creating controls that you want to do animations on.</p>
<pre class="brush: csharp;">
TextBlock tb = new TextBlock();
tb.Name = &quot;textBlock1&quot;;
// set more property values

tb.FadeIn();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/wpf-create-animation-programmatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 4 &#8211; Connecting To Remote Database With WCF</title>
		<link>http://eclipsed4utoo.com/blog/silverlight-connecting-remote-database-wcf/</link>
		<comments>http://eclipsed4utoo.com/blog/silverlight-connecting-remote-database-wcf/#comments</comments>
		<pubDate>Fri, 14 May 2010 22:00:36 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight 4]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=314</guid>
		<description><![CDATA[This tutorial will show how to connect to a database that is located on the deploy server from a Silverlight application.
I will be using Visual Studio 2010 and Silverlight 4.
So first, we will create a Silverlight 4 application.


Next, we are just going to put a DataGrid on our MainPage.xaml.

&#60;UserControl x:Class="SilverlightWCFTutorial.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial will show how to connect to a database that is located on the deploy server from a Silverlight application.</p>
<p>I will be using Visual Studio 2010 and Silverlight 4.</p>
<p>So first, we will create a Silverlight 4 application.</p>
<p><img class="alignnone size-full wp-image-316" title="Thumb1" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/05/Thumb1.png" alt="Thumb1" width="200" height="116" /></p>
<p><img class="alignnone size-full wp-image-318" title="Image2" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/05/Image21.PNG" alt="Image2" width="218" height="175" /></p>
<p>Next, we are just going to put a DataGrid on our MainPage.xaml.</p>
<pre><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;">
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #000088; padding: 0px; margin: 0px;">&lt;UserControl</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">x:Class</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"SilverlightWCFTutorial.MainPage"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns:x</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/winfx/2006/xaml"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns:d</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/exp</span><strong> </strong><span style="color: #008800; padding: 0px; margin: 0px;">ression/blend/2008"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns:mc</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">mc:Ignorable</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"d"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #660066; padding: 0px; margin: 0px;">d:DesignHeight</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"300"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">d:DesignWidth</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"400"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">xmlns:sdk</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"</span><span style="color: #000088; padding: 0px; margin: 0px;">&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;Grid</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">x:Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"LayoutRoot"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #660066; padding: 0px; margin: 0px;">Background</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"White"</span><span style="color: #000088; padding: 0px; margin: 0px;">&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;sdk:DataGrid</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Name</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"dataGridPerson"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">AutoGenerateColumns</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"True"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Height</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"206"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">HorizontalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Left"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Margin</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"12,44,0,0"</span><span style="color: #000000; padding: 0px; margin: 0px;">  <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">VerticalAlignment</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"Top"</span><span style="color: #000000; padding: 0px; margin: 0px;"> <br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">Width</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"376"</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #660066; padding: 0px; margin: 0px;">ItemsSource</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #008800; padding: 0px; margin: 0px;">"{Binding}"</span><span style="color: #000088; padding: 0px; margin: 0px;">&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;/sdk:DataGrid&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;/Grid&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #000088; padding: 0px; margin: 0px;">&lt;/UserControl&gt;</span></pre>
<p></span></pre>
<p>So for the Grid, we are simply going to show a list of names that are in a database table.  I have a database table setup as:</p>
<p>Table Name:   Person</p>
<p>Columns:<br />
ID<br />
FirstName<br />
LastName<br />
Age</p>
<p>I am going to concatenate the First Name and Last Name, then bind that to the grid.</p>
<p>Now that we have our Silverlight application ready, we will add a WCF service to our existing &#8220;SilverlightWCFTutorial.Web&#8221; project that was automatically created for us.</p>
<p><img class="alignnone size-full wp-image-320" title="Image3" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/05/Image3.PNG" alt="Image3" width="479" height="269" /></p>
<p>Now we are going to setup the interface that was created for us.  The interface automatically creates a method called &#8220;DoWork&#8221;.  We are going to change the name of this to be a little more specific.  I gave the method the name of &#8220;GetNames&#8221;.</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #999900; padding: 0px; margin: 0px;">[</span><span style="color: #990099; padding: 0px; margin: 0px;">ServiceContract</span><span style="color: #999900; padding: 0px; margin: 0px;">]</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">interface</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">IDatabaseService</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">[</span><span style="color: #990099; padding: 0px; margin: 0px;">OperationContract</span><span style="color: #999900; padding: 0px; margin: 0px;">]</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #990099; padding: 0px; margin: 0px;">List</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">GetNames</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
<p>Now that the interface is finished, we will move to the service file.  Double-click on the &#8220;DatabaseService.svc&#8221; file to get to the code.  This code is just going to run some simple ADO to get the data from the database.</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Collections</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Generic</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Linq</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Runtime</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Serialization</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ServiceModel</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Text</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Data</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">SqlClient</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Data</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">namespace</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">SilverlightWcfService</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "DatabaseService" in code, svc and config file together.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">class</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">DatabaseService</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">:</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">IDatabaseService</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">string</span><span style="color: #000000; padding: 0px; margin: 0px;"> myConnectionString </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #646464; padding: 0px; margin: 0px;">"someConnectionString"</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">List</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">GetNames</span><span style="color: #999900; padding: 0px; margin: 0px;">()</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #990099; padding: 0px; margin: 0px;">List</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"> list </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">List</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">SqlConnection</span><span style="color: #000000; padding: 0px; margin: 0px;"> cn </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">SqlConnection</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #000000; padding: 0px; margin: 0px;">myConnectionString</span><span style="color: #999900; padding: 0px; margin: 0px;">))</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">SqlCommand</span><span style="color: #000000; padding: 0px; margin: 0px;"> cmd </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> cn</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">CreateCommand</span><span style="color: #999900; padding: 0px; margin: 0px;">())</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                    cmd</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">CommandText</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #646464; padding: 0px; margin: 0px;">"SELECT FirstName + ' ' + LastName FROM Person"</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                    cmd</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">CommandType</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">CommandType</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Text</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />                    cn</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Open</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />                    </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">SqlDataReader</span><span style="color: #000000; padding: 0px; margin: 0px;"> dr </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> cmd</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ExecuteReader</span><span style="color: #999900; padding: 0px; margin: 0px;">())</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                    </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">while</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #000000; padding: 0px; margin: 0px;">dr</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Read</span><span style="color: #999900; padding: 0px; margin: 0px;">())</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                            list</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Add</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #000000; padding: 0px; margin: 0px;">dr</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetString</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006666; padding: 0px; margin: 0px;">0</span><span style="color: #999900; padding: 0px; margin: 0px;">));</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                    </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">return</span><span style="color: #000000; padding: 0px; margin: 0px;"> list</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
<p>Next, we will need to fix the &#8220;Markup&#8221; of the &#8220;DatabaseService.svc&#8221; file.   Right-click on the file, then choose &#8220;View Markup&#8221;.  In the markup, you will notice a &#8220;Service&#8221; attribute.  This should be in the format of &#8220;Namespace.ServiceName&#8221;.  In our case, the autogenerated value could be incorrect.  Change the code to this..</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #999900; padding: 0px; margin: 0px;">&lt;%@</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">ServiceHost</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">Language</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #646464; padding: 0px; margin: 0px;">"C#"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">Debug</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #646464; padding: 0px; margin: 0px;">"true"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">Service</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #646464; padding: 0px; margin: 0px;">"SilverlightWCFTutorial.Web.DatabaseService"</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">CodeBehind</span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #646464; padding: 0px; margin: 0px;">"DatabaseService.svc.cs"</span><span style="color: #000000; padding: 0px; margin: 0px;"> %&gt;</span></pre>
<p>Now that our WCF service is complete, we are going back to the Silverlight app.  We are going to add an event handler for the &#8220;Loaded&#8221; event of the MainPage.xaml.</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage</span><span style="color: #999900; padding: 0px; margin: 0px;">()</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #990099; padding: 0px; margin: 0px;">InitializeComponent</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">this</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Loaded</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">+=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventHandler</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">);</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
<p>You will need to rebuild your solution at this point.</p>
<p>We will also need to add a Reference to the Service for our Silverlight project.  Right-click on the &#8220;SilverlightWCFTutorial&#8221; project, and choose &#8220;Add Service Reference&#8230;&#8221;.  Once the Add Service Reference window comes up, click the &#8220;Discover&#8221; button.  This will find our service.  Fill in the &#8220;Namespace&#8221;(called mine &#8220;MyDatabaseService&#8221;).  Then click OK.</p>
<p><img class="alignnone size-full wp-image-322" title="Image4" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/05/Image4.PNG" alt="Image4" width="377" height="304" /></p>
<p>Now we are ready to do some code.  Remember that the requests in Silverlight are made asynchronously.</p>
<p>In our &#8220;MainPage_Loaded&#8217; event handler, we will have this code..</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">void</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> sender</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> e</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">// The DatabaseServiceClient class was automatically created for us.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">// The autogeneration takes the name of the service, then appends "Client" to it,</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">//   giving us the "DatabaseServiceClient" class.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #990099; padding: 0px; margin: 0px;">DatabaseServiceClient</span><span style="color: #000000; padding: 0px; margin: 0px;"> client </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">DatabaseServiceClient</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">// Since requests in Silverlight are asynchronous, we have a Completed method</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #008200; padding: 0px; margin: 0px;">//   that will be fired when the request has been completed.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    client</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesCompleted</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">+=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">delegate</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> s</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesCompletedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> es</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #008200; padding: 0px; margin: 0px;">// when the request has been completed, we want to bind the data to the grid.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #008200; padding: 0px; margin: 0px;">// the Result property of the EventArgs contains the returned data.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #008200; padding: 0px; margin: 0px;">// ObservableCollection is a common collection that is used when databinding to</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #008200; padding: 0px; margin: 0px;">//    a DataGrid.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #990099; padding: 0px; margin: 0px;">ObservableCollection</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"> myList </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> es</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Result</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        dataGridPerson</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">DataContext</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> myList</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">};</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />    client</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesAsync</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
<p>And that&#8217;s it.  We now run the Silverlight app, and we get this&#8230;</p>
<p><img class="alignnone size-full wp-image-323" title="Image5" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/05/Image5.PNG" alt="Image5" width="303" height="193" /></p>
<p>Here is the full code of the MainPage.xaml&#8230;</p>
<p><span style="font-family: Verdana, sans-serif; line-height: 21px; font-size: 14px; border-collapse: collapse; color: #222222;"> </span></p>
<pre style="font-size: 14px !important; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; font-family: monospace !important; overflow-x: scroll; overflow-y: scroll; max-height: 500px; width: 450px; display: block; background-position: initial initial; background-repeat: initial initial; padding: 12px; margin: 0px; border: 1px dotted #000000;"><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Collections</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">ObjectModel</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Windows</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">System</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Windows</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Controls</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">using</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">SilverlightWCFTutorial</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">MyDatabaseService</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" /></span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">namespace</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">SilverlightWCFTutorial</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">partial</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">class</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">:</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">UserControl</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">public</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage</span><span style="color: #999900; padding: 0px; margin: 0px;">()</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #990099; padding: 0px; margin: 0px;">InitializeComponent</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">this</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Loaded</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">+=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventHandler</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">);</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">void</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">MainPage_Loaded</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> sender</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">RoutedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> e</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">// The DatabaseServiceClient class was automatically created for us.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">// The autogeneration takes the name of the service, then appends "Client" to it,</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">//   giving us the "DatabaseServiceClient" class.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #990099; padding: 0px; margin: 0px;">DatabaseServiceClient</span><span style="color: #000000; padding: 0px; margin: 0px;"> client </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">new</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">DatabaseServiceClient</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">// Since requests in Silverlight are asynchronous, we have a Completed method</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #008200; padding: 0px; margin: 0px;">//   that will be fired when the request has been completed.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            client</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesCompleted</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">+=</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">delegate</span><span style="color: #999900; padding: 0px; margin: 0px;">(</span><span style="color: #006699; font-weight: bold; padding: 0px; margin: 0px;">object</span><span style="color: #000000; padding: 0px; margin: 0px;"> s</span><span style="color: #999900; padding: 0px; margin: 0px;">,</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesCompletedEventArgs</span><span style="color: #000000; padding: 0px; margin: 0px;"> es</span><span style="color: #999900; padding: 0px; margin: 0px;">)</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">{</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #008200; padding: 0px; margin: 0px;">// when the request has been completed, we want to bind the data to the grid.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #008200; padding: 0px; margin: 0px;">// the Result property of the EventArgs contains the returned data.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #008200; padding: 0px; margin: 0px;">// ObservableCollection is a common collection that is used when databinding to</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #008200; padding: 0px; margin: 0px;">//    a DataGrid.</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />                </span><span style="color: #990099; padding: 0px; margin: 0px;">ObservableCollection</span><span style="color: #646464; padding: 0px; margin: 0px;">&lt;string&gt;</span><span style="color: #000000; padding: 0px; margin: 0px;"> myList </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> es</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">Result</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />                dataGridPerson</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">DataContext</span><span style="color: #000000; padding: 0px; margin: 0px;"> </span><span style="color: #999900; padding: 0px; margin: 0px;">=</span><span style="color: #000000; padding: 0px; margin: 0px;"> myList</span><span style="color: #999900; padding: 0px; margin: 0px;">;</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />            </span><span style="color: #999900; padding: 0px; margin: 0px;">};</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />            client</span><span style="color: #999900; padding: 0px; margin: 0px;">.</span><span style="color: #990099; padding: 0px; margin: 0px;">GetNamesAsync</span><span style="color: #999900; padding: 0px; margin: 0px;">();</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />        </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" />    </span><span style="color: #999900; padding: 0px; margin: 0px;">}</span><span style="color: #000000; padding: 0px; margin: 0px;"><br style="padding: 0px; margin: 0px;" /></span><span style="color: #999900; padding: 0px; margin: 0px;">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/silverlight-connecting-remote-database-wcf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using SqlDependency To Monitor SQL Database Changes</title>
		<link>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/</link>
		<comments>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 22:00:34 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SqlDependency]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=299</guid>
		<description><![CDATA[In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.
The purpose of this class is to save you from having to continuously re-query the database to get new data. You [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.</p>
<p>The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.</p>
<p>We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.</p>
<p>My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.</p>
<p>So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</p>
<pre class="brush: sql;">
USING [YourDatabaseName]

CREATE QUEUE NameChangeQueue;
CREATE SERVICE NameChangeService ON QUEUE NameChangeQueue
([http://schemas.microsoft.com/sql/notifications/postquerynotification]);

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO YourUserName;
</pre>
<p>You can now see that we have a new queue and a new service.</p>
<p><img class="alignnone size-full wp-image-300" title="Database" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/Database.png" alt="Database" width="374" height="373" /></p>
<p>Now we move on to the code. The first thing you will need to do is to test if the connecting user has the privileges for the query notifications.</p>
<pre class="brush: csharp;">
private bool DoesUserHavePermission()
{
     try
     {
           SqlClientPermission clientPermission = new SqlClientPermission(PermissionState.Unrestricted);

           // will throw an error if user does not have permissions
           clientPermission.Demand();

           return true;
     }
     catch
     {
           return false;
     }
}
</pre>
<p>Next, we have our method to get the user names from the database.</p>
<pre class="brush: csharp;">
private void GetNames()
{
    if (!DoesUserHavePermission())
        return;

    lbNames.Items.Clear();

    SqlDependency.Stop(connectionString);
    SqlDependency.Start(connectionString);

    using (SqlConnection cn = new SqlConnection(connectionString))
    {
        using (SqlCommand cmd = cn.CreateCommand())
        {
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = &quot;SELECT FirstName, LastName FROM dbo.[Users]&quot;;

            cmd.Notification = null;

            SqlDependency dep = new SqlDependency(cmd);
            dep.OnChange += new OnChangeEventHandler(dep_OnChange);

            cn.Open();

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    lbNames.Items.Add(dr.GetString(0) + &quot; &quot; + dr.GetString(1));
                }
            }
        }
    }
}
</pre>
<p><span style="color: #ff0000;"><strong>THIS IS VERY IMPORTANT.</strong></span></p>
<p><span style="color: #ff0000;">1. In the previous code, you will notice that my SQL query does not use the &#8220;*&#8221; wildcard to return all columns. You MUST return the exact columns that you want. If you use the &#8220;*&#8221;, it will cause you to have unwanted consequences.<br />
</span></p>
<p><span style="color: #ff0000;">2. Also in the previous code, you will notice that my SQL query contains the &#8220;two-part&#8221; table name. This is also REQUIRED. Using just &#8220;TableName&#8221; instead of &#8220;owner.TableName&#8221; will also cause unwanted consequences.</span></p>
<p>Here is the method for the <strong>OnChange </strong>event</p>
<pre class="brush: csharp;">
void dep_OnChange(object sender, SqlNotificationEventArgs e)
{
    // this event is run asynchronously so you will need to invoke to run on UI thread.
    if (this.InvokeRequired)
        lbNames.BeginInvoke(new MethodInvoker(GetNames));
    else
        GetNames();

    // this will remove the event handler since the dependency is only for a single notification
    SqlDependency dep = sender as SqlDependency;
    dep.OnChange -= new OnChangeEventHandler(dep_OnChange);
}
</pre>
<p>You will also need to stop the dependency when the form closes so that it doesn&#8217;t leave it running.</p>
<pre class="brush: csharp;">
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    SqlDependency.Stop(connectionString);
}
</pre>
<p>The other events&#8230;</p>
<pre class="brush: csharp;">
private void Form1_Load(object sender, EventArgs e)
{
    GetNames();
}

private void btnShowForm_Click(object sender, EventArgs e)
{
    Form2 f = new Form2();
    f.Show();
}
</pre>
<p>And my simple second form&#8217;s code..</p>
<pre class="brush: csharp;">
private void btnSave_Click(object sender, EventArgs e)
{
    using (SqlConnection cn = new SqlConnection(&quot;Data Source=alfordr;Initial Catalog=MyTestDatabase;User Id=dev;Password=dev;&quot;))
    {
        using (SqlCommand cmd = cn.CreateCommand())
        {
            cmd.CommandText = &quot;INSERT INTO Users VALUES (@FirstName, @LastName)&quot;;
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue(&quot;@FirstName&quot;, txtFirstName.Text);
            cmd.Parameters.AddWithValue(&quot;@LastName&quot;, txtLastName.Text);

            cn.Open();

            cmd.ExecuteNonQuery();
        }
    }
}
</pre>
<p>And that is really all you have to do. Here are a couple of screenshots.</p>
<p>Before clicking &#8220;Save&#8221;&#8230;<br />
<img class="alignnone size-full wp-image-307" title="BeforeSave" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/BeforeSave.png" alt="BeforeSave" width="657" height="367" /><br />
After clicking &#8220;Save&#8221;&#8230;..<br />
<img class="alignnone size-full wp-image-308" title="AfterSave" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/AfterSave.png" alt="AfterSave" width="657" height="364" /></p>
<p>As you can see from my code, I am simply inserting data into my database when the<strong> Save</strong> button is clicked.  When the data is inserted, a notification is sent to the application, which is handled by the <strong>OnChange </strong>event.  The OnChange event then invokes the <strong>GetNames </strong>method which re-queries the database to get the new information.  This makes a huge performance improvement because I ONLY query when I need to.</p>
<p>This works for inserts, updates, and deletes.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: Verdana,sans-serif; font-size: 14px; line-height: 21px;">In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.<span class="Apple-converted-space"> </span><br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</span></span><span style="border-collapse: separate; color: #000000; font-family: Arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span style="border-collapse: collapse; color: #222222; font-family: Verdana,sans-serif; font-size: 14px; line-height: 21px;">In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database. <br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Using an Application Configuration File</title>
		<link>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/</link>
		<comments>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:16:01 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ConfigurationManager]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=292</guid>
		<description><![CDATA[This is going to be a real short post about an issue that I ran into recently with WPF.
I was wanting to use an app config file with my WPF application.  I was running into an issue with the ConfigurationManager calls not getting the information from the app config file.
I added the app config just [...]]]></description>
			<content:encoded><![CDATA[<p>This is going to be a real short post about an issue that I ran into recently with WPF.</p>
<p>I was wanting to use an app config file with my WPF application.  I was running into an issue with the ConfigurationManager calls not getting the information from the app config file.</p>
<p>I added the app config just like I would in a Windows Form..<br />
<img class="alignnone size-full wp-image-293" title="AppConfig" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/AppConfig.png" alt="AppConfig" width="679" height="418" /></p>
<p>My app config file looked something like this&#8230;</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;configuration&gt;
  &lt;appSettings&gt;
     &lt;add key=&quot;myKey&quot; value=&quot;SomeValue&quot; /&gt;
  &lt;/appSettings&gt;
&lt;/configuration&gt;
</pre>
<p>I was using the standard code that works fine in Windows Forms(needed to add a reference to the System.Configuration):</p>
<pre class="brush: csharp;">
using System.Configuration

private void Window_Loaded(object sender, RoutedEventArgs e)
{
     var myKey = ConfigurationManager.AppSettings[&quot;myKey&quot;];
}
</pre>
<p>However, the app settings were not being found.  After scratching my head for a while and searching numerous places online, I found a small response on a forum.  None of the &#8220;MVP&#8221;s picked up on it.  It was because of the name of the app config file.  By default, VS2008 added the file as &#8220;App1.config&#8221;.  For some reason, the ConfigurationManager class looks for a file named exactly &#8220;App.config&#8221;.</p>
<p>So simply changing the name of the config file to &#8220;App.config&#8221; fixed the issue and the code started working.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8211; Log in to Website Programmatically</title>
		<link>http://eclipsed4utoo.com/blog/log-website-programmatically/</link>
		<comments>http://eclipsed4utoo.com/blog/log-website-programmatically/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 22:00:41 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[programmatically]]></category>
		<category><![CDATA[WebBrowser]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=244</guid>
		<description><![CDATA[In this tutorial, will show how to log into a website through code.  I am going to use Twitter in my example.
THIS IS FOR EDUCATIONAL PURPOSES ONLY.  I WOULD NOT ADVISE THE USE OF THIS TO ALWAYS LOG-IN TO TWITTER.
First, you will need to download and install Tamper Data.  It&#8217;s an add-on for Firefox that [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial, will show how to log into a website through code.  I am going to use Twitter in my example.</p>
<p><span style="color: #ff0000;"><strong>THIS IS FOR EDUCATIONAL PURPOSES ONLY.  I WOULD NOT ADVISE THE USE OF THIS TO ALWAYS LOG-IN TO TWITTER.</strong></span></p>
<p>First, you will need to download and install <a href="https://addons.mozilla.org/en-US/firefox/addon/966" target="_blank">Tamper Data</a>.  It&#8217;s an add-on for Firefox that allows you to view and tamper with GET/POST web request data.  We won&#8217;t be doing any tampering.  We will be using it to view what POST parameters the page is expecting.</p>
<p>Next, navigate to the log in page for Twitter(<a href="https://twitter.com/login" target="_blank">http://twitter.com/login</a>).  Once the page has loaded, go to <strong>Tools</strong> &#8211;&gt; <strong>Tamper Data</strong> to open <strong>Tamper Data</strong>.  At the top of Tamper Data, click the <strong>Start Tamper</strong> button.  After clicking the button, click the &#8220;Sign In&#8221; button on Twitter&#8217;s log in page.  Once you hit the Sign In button, Tamper Data will prompt you with this popup&#8230;.</p>
<p><img class="alignnone size-full wp-image-245" title="Tamper Data Popup" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2009/12/12-9-2009-4-24-49-PM.png" alt="Tamper Data Popup" width="324" height="140" /></p>
<p>Click &#8220;Tamper&#8221;.  You will then be presented with this window&#8230;</p>
<p><img class="alignnone size-full wp-image-246" title="Tamper Data" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2009/12/12-9-2009-4-15-09-PM.png" alt="Tamper Data" width="724" height="489" /></p>
<p>If you notice on the right-hand side of the window, you will see the POST parameters.  These are:</p>
<p>authenticity_token<br />
session[username_or_email]<br />
session[password]<br />
commit</p>
<p>Now that we have those, we can close the Tamper Data window, and close Firefox.</p>
<p>Now for the code.  The code is actually fairly simple.  We are just going to use the <strong>WebBrowser</strong> class to make the requests to the server to get the html source of the page.  This will give us the &#8220;authenticity_token&#8221; for us to use in the POST request.</p>
<pre class="brush: csharp;">
string url = &quot;https://twitter.com/login&quot;;
string username = &quot;someUserName&quot;;
string password = &quot;somePassword&quot;;
string commit = &quot;Sign+In&quot;; //this matches the data from Tamper Data

private void Login()
{
     WebBrowser b = new WebBrowser();
     b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted);
     b.Navigate(url);
}

private void b_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     WebBrowser b = sender as WebBrowser;
     string response = b.DocumentText;

     // looks in the page source to find the authenticity token.
     // could also use regular expressions here.
     int index = response.IndexOf(&quot;authenticity_token&quot;);
     int startIndex = index + 41;
     string authenticityToken = response.Substring(startIndex, 40);

     // unregisters the first event handler
     // adds a second event handler
     b.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted);
     b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted2);

     // format our data that we are going to post to the server
     // this will include our post parameters.  They do not need to be in a specific
     //    order, as long as they are concatenated together using an ampersand ( &amp; )
     string postData = string.Format(&quot;authenticity_token={2}&amp;session[username_or_email]={0}&amp;session[password]={1}&amp;commit={3}&quot;, username, password, authenticityToken, commit);

     ASCIIEncoding enc = new ASCIIEncoding();

     //  we are encoding the postData to a byte array
     b.Navigate(&quot;https://twitter.com/sessions&quot;, &quot;&quot;, enc.GetBytes(postData), &quot;Content-Type: application/x-www-form-urlencoded\r\n&quot;);
}

private void b_DocumentCompleted2(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     WebBrowser b = sender as WebBrowser;
     string response = b.DocumentText;

     if (response.Contains(&quot;Sign out&quot;))
     {
         MessageBox.Show(&quot;Login Successful&quot;);
     }
}
</pre>
<p>And that&#8217;s all you need to do.  You can now use the <strong>response</strong> variable to see the tweets that are in your timeline.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/log-website-programmatically/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>ASP.Net &#8211; AJAX and an External Javascript File</title>
		<link>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/</link>
		<comments>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 22:00:44 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[external]]></category>
		<category><![CDATA[javacript]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=264</guid>
		<description><![CDATA[Recently, I needed to add a color picker to a web application.  I thought I would try the new AJAX toolkit, but the toolkit was full of issues so I had to resort to doing it with javascript.  I downloaded a color picker that somebody had done(and donated for their development).
When I went to add [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I needed to add a color picker to a web application.  I thought I would try the new AJAX toolkit, but the toolkit was full of issues so I had to resort to doing it with javascript.  I downloaded a color picker that somebody had done(and donated for their development).</p>
<p>When I went to add the external javascript file and the other associated files, my AJAX page would no longer show up.  Anything inside of an UpdatePanel would not show up.  I did some searching and found that using an external javascript file can cause AJAX to fail.</p>
<p>I originally had this code which was giving me issues.</p>
<pre class="brush: xml;">
&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;
    &lt;asp:ScriptManagerProxy ID=&quot;ScriptManagerProxy1&quot; runat=&quot;server&quot; /&gt;
    &lt;script src=&quot;../Javascript/jscolor/jscolor.js&quot; type=&quot;text/javascript&quot; /&gt;

    &lt;asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;&gt;
       &lt;%--   some controls  --%&gt;
    &lt;/asp:UpdatePanel&gt;
&lt;/asp:Content&gt;
</pre>
</pre>
<p>I used the <strong>ScriptReference </strong>in the <strong>ScriptManagerProxy</strong> to add a reference to the javascript file:</p>
<pre>
<pre class="brush: xml;">
&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;
    &lt;asp:ScriptManagerProxy ID=&quot;ScriptManagerProxy1&quot; runat=&quot;server&quot;&gt;
       &lt;Scripts&gt;
          &lt;asp:ScriptReference Path=&quot;~/Javascript/jscolor/jscolor.js&quot; /&gt;
       &lt;/Scripts&gt;
    &lt;/asp:ScriptManagerProxy&gt;

    &lt;asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;&gt;
       &lt;%--   some controls  --%&gt;
    &lt;/asp:UpdatePanel&gt;
&lt;/asp:Content&gt;
</pre>
</pre>
</pre>
<p>And that worked.  The controls inside the <strong>UpdatePanel</strong> now show up.</p>
<pre>
<pre></pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
