<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8016829656920012950</id><updated>2012-02-03T09:01:10.126-06:00</updated><category term='Code'/><category term='Wallpaper'/><category term='Norway'/><category term='Geek'/><category term='Fun'/><category term='Office'/><category term='Hawkeyes'/><title type='text'>Aaron Hoffman's Blog</title><subtitle type='html'>a blog by Aaron Hoffman.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-2731613165814326152</id><published>2011-10-22T17:29:00.000-05:00</published><updated>2011-10-22T17:47:57.799-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Twitter Analytics: Thinc Iowa Popularity Contest</title><content type='html'>I find it more and more difficult to attend a conference without the assistance of Twitter. &amp;nbsp;It allows me to quickly get a feel for the room. &amp;nbsp;The quotes that landed well with people, what they disagree with, the interesting side stories of the day. &amp;nbsp;I've often thought the Twitter Search function lacks much of what I wish it could do/should do. &amp;nbsp;How would Q &amp;amp; A sessions be improved if Twitter was used to crowd source the questions (or the answers for that matter)? &amp;nbsp;This idea, of course, can be applied more broadly and is not just relevant to conferences. &amp;nbsp;Analyzing tweets based on #hashtags, instant polls of crowds - How would our world change if this data was put to use?&lt;br /&gt;&lt;br /&gt;Now this may be considered a &lt;i&gt;bad&lt;/i&gt;&amp;nbsp;example (in every way) of what I mean, but let's take a look at some of the most&amp;nbsp;occurring&amp;nbsp;@mentions in Tweets that can be related to the &lt;a href="http://www.thinciowa.com/"&gt;Thinc Iowa&lt;/a&gt; closing party. &amp;nbsp;One reason I would consider this a &lt;i&gt;bad&lt;/i&gt; example is because number of&amp;nbsp;occurrences&amp;nbsp;alone is not very meaningful. &amp;nbsp;But&amp;nbsp;nonetheless, here are the results (in no particular order):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;By far the most @mentions&lt;/b&gt;&lt;br /&gt;@thinciowa &amp;nbsp;- makes sense :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Speakers&lt;/b&gt;&lt;br /&gt;@bpmilne&lt;br /&gt;@paigecraig&lt;br /&gt;@8en &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(interesting to see the common misspellings of his user name...)&lt;br /&gt;@tscottcase&lt;br /&gt;@nickseguin&lt;br /&gt;@robbievitrano&lt;br /&gt;@jchou&lt;br /&gt;@dougkolson&lt;br /&gt;@AndyMurrayX&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The "Startups"&lt;/b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(what about the "corporations" :-)&lt;br /&gt;@startupamerica&lt;br /&gt;&lt;br /&gt;@dwolla&lt;br /&gt;@pinterest&lt;br /&gt;&lt;br /&gt;@betterworks&lt;br /&gt;&lt;br /&gt;&lt;b&gt;and The Ink&lt;/b&gt;&lt;br /&gt;@SiliconPrairie&lt;br /&gt;@slobotski&lt;br /&gt;@geoffwood&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some other interesting/commonly tweeted words:&lt;br /&gt;&lt;br /&gt;great&lt;br /&gt;love&lt;br /&gt;thanks&lt;br /&gt;Iowa&lt;br /&gt;"Des" - which was tweeted more often than "Moines"...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-Aaron&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-2731613165814326152?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/2731613165814326152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=2731613165814326152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/2731613165814326152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/2731613165814326152'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2011/10/twitter-analytics-thinc-iowa-popularity.html' title='Twitter Analytics: Thinc Iowa Popularity Contest'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-2126692758083788562</id><published>2011-04-13T14:52:00.000-05:00</published><updated>2011-04-13T14:52:47.748-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Visual Studio Macro to Break on Every Method in File</title><content type='html'>While tracking down the source of certain features (read bugs) within overly complex applications, I have sometimes found it useful to break on every call to every method within a file.&lt;br /&gt;&lt;br /&gt;The functionality to "Break on Every Method" is not built into Visual Studio, but it is possible to set up the necessary break points through a macro.&amp;nbsp; I did not originally write this macro, but while trying to find it again at a recent job I couldn't, so I decided to post it here for safe keeping.&amp;nbsp; It is fairly primitive, but it gets the job done.&amp;nbsp; Simply place the cursor within the file you are working with right before the first method you want to break on.&amp;nbsp; The macro will then search through the file for each opening brace "{" and place a break point at each one.&amp;nbsp; Hope it helps someone.&lt;br /&gt;&lt;br /&gt;To "install" this macro simply open up your macro explorer, edit a module and paste this macro/method in.&amp;nbsp; If you do not have any macros you will need to record an empty macro first to get a default module created for you.&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sub BreakOnAllMethods()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim returnValue As vsIncrementalSearchResult&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim findresult As vsFindResult&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim safeguard As Integer&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; safeguard = 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.FindWhat = "{"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.MatchCase = False&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.MatchWholeWord = False&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.Backwards = False&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.MatchInHiddenText = True&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.Find.Action = vsFindAction.vsFindActionFind&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; While safeguard &amp;lt; 100&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; findresult = DTE.Find.Execute()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If (findresult = vsFindResult.vsFindResultNotFound) Then&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Return&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.ExecuteCommand("Debug.ToggleBreakpoint")&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.ExecuteCommand("Edit.GotoBrace")&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DTE.ActiveDocument.Selection.CharRight()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; safeguard = safeguard + 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End While&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-2126692758083788562?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/2126692758083788562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=2126692758083788562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/2126692758083788562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/2126692758083788562'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2011/04/visual-studio-macro-to-break-on-every.html' title='Visual Studio Macro to Break on Every Method in File'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-6768567493875838488</id><published>2010-12-28T11:07:00.000-06:00</published><updated>2010-12-28T11:07:20.409-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>Microsoft Excel Find Next Value Change in Column Macro</title><content type='html'>I find that if I’m working with data from a SQL query it is easier to manipulate, sort, and filter that data in Excel than it is in the SQL query itself.&amp;nbsp; I am also a fan of using Excel as a Data Visualization/Reporting tool.&amp;nbsp; Because of these two things I tend to work in Excel quite a bit and have developed a few macros to help make my life easier.&lt;br /&gt;&lt;br /&gt;Many times when you are working with data from a SQL query and you sort on a “type” column (example below) you will have many repeated values in a single column.&amp;nbsp; If you want to page through the data and find when the values changes from one to the next, Excel does not have the built in ability to do this.&amp;nbsp; However the Macro to perform this function is pretty easy to write.&lt;br /&gt;&lt;br /&gt;In the image below the data was sorted on the “Type” column.&amp;nbsp; If cell B3 is selected and the &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FindNextValueChangeInColumn &lt;/span&gt;&lt;/span&gt;macro is run, cell B7 would be selected.&amp;nbsp; If it is run a second time cell B12 would be selected and so on.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_MIQt5C3Lnlo/TRoMB79sU-I/AAAAAAAAAEw/fNvES78V1ZQ/s1600/ExcelNextValueChangeExample.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_MIQt5C3Lnlo/TRoMB79sU-I/AAAAAAAAAEw/fNvES78V1ZQ/s1600/ExcelNextValueChangeExample.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Here are the Macros to copy and paste into an Excel VBA Module:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;Sub FindNextValueChangeInColumn()&lt;br /&gt;'&lt;br /&gt;' FindNextValueChangeInColumn Macro&lt;br /&gt;'&lt;br /&gt;On Error GoTo ErrHandler&lt;br /&gt;&lt;br /&gt;Dim currentValue As String&lt;br /&gt;Dim compareValue As String&lt;br /&gt;&lt;br /&gt;currentValue = ActiveCell.Value&lt;br /&gt;&lt;br /&gt;If (currentValue = "") Then&lt;br /&gt;' Value is blank, this could mean we are at the bottom of all the values&lt;br /&gt;' use xlDown for performance&lt;br /&gt;Selection.End(xlDown).Select&lt;br /&gt;Else&lt;br /&gt;' select next cell down (priming read)&lt;br /&gt;ActiveCell.Offset(1, 0).Select&lt;br /&gt;compareValue = ActiveCell.Value&lt;br /&gt;&lt;br /&gt;Do While currentValue = compareValue&lt;br /&gt;ActiveCell.Offset(1, 0).Select&lt;br /&gt;compareValue = ActiveCell.Value&lt;br /&gt;Loop&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Exit Sub&lt;br /&gt;&lt;br /&gt;ErrHandler:&lt;br /&gt;Exit Sub&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sub FindPreviousValueChangeInColumn()&lt;br /&gt;'&lt;br /&gt;' FindPreviousValueChangeInColumn Macro&lt;br /&gt;'&lt;br /&gt;On Error GoTo ErrHandler&lt;br /&gt;&lt;br /&gt;Dim currentValue As String&lt;br /&gt;Dim compareValue As String&lt;br /&gt;&lt;br /&gt;currentValue = ActiveCell.Value&lt;br /&gt;&lt;br /&gt;If (currentValue = "") Then&lt;br /&gt;' Value is blank, this could mean we are at the top of all the values&lt;br /&gt;' use xlUp for performance&lt;br /&gt;Selection.End(xlUp).Select&lt;br /&gt;Else&lt;br /&gt;' select next cell down (priming read)&lt;br /&gt;ActiveCell.Offset(-1, 0).Select&lt;br /&gt;compareValue = ActiveCell.Value&lt;br /&gt;&lt;br /&gt;Do While currentValue = compareValue&lt;br /&gt;ActiveCell.Offset(-1, 0).Select&lt;br /&gt;compareValue = ActiveCell.Value&lt;br /&gt;Loop&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Exit Sub&lt;br /&gt;&lt;br /&gt;ErrHandler:&lt;br /&gt;Exit Sub&lt;br /&gt;&lt;br /&gt;End Sub&lt;/span&gt;                                                    &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this saves you some time!&lt;br /&gt;&lt;br /&gt;-Aaron&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-6768567493875838488?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/6768567493875838488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=6768567493875838488' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6768567493875838488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6768567493875838488'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2010/12/microsoft-excel-find-next-value-change.html' title='Microsoft Excel Find Next Value Change in Column Macro'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_MIQt5C3Lnlo/TRoMB79sU-I/AAAAAAAAAEw/fNvES78V1ZQ/s72-c/ExcelNextValueChangeExample.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-1342495955894191032</id><published>2010-09-26T12:32:00.056-05:00</published><updated>2010-09-26T16:15:18.793-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Visual Studio Code Snippet for a Notify Property (INotifyPropertyChanged)</title><content type='html'>In the ViewModel classes of projects following the M-V-VM pattern it is often necessary to raise a "PropertyChanged" event (to assist with INotifyPropertyChanged interface implementation) from within a property's setter. &amp;nbsp;This is a&amp;nbsp;tedious&amp;nbsp;task that will hopefully someday be solved by using the Compiler as a Service... &amp;nbsp;But until that day comes, I've created a handy Visual Studio Code Snippet for myself to help automate this task. &amp;nbsp;The XML for the code snippet, and an example of the code it produces are below (note the Base Class and the OnPropertyChanged() method call). &amp;nbsp;Continue reading to see how to "install" and implement this snippet.&lt;br /&gt;&lt;br /&gt;(or download the snippet here:&amp;nbsp;&lt;a href="http://aaronhoffman.googlecode.com/files/NotifyPropertyCodeSnippet.zip"&gt;http://aaronhoffman.googlecode.com/files/NotifyPropertyCodeSnippet.zip&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;&lt;div style="color: black; overflow: auto; width: 99.5%;"&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;?&lt;span style="color: #a31515;"&gt;xml&lt;span style="color: blue;"&gt; &lt;span style="color: red;"&gt;version&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;1.0&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt; &lt;span style="color: red;"&gt;encoding&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;utf-8&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt; ?&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;span style="color: #a31515;"&gt;CodeSnippets&lt;span style="color: blue;"&gt;  &lt;span style="color: red;"&gt;xmlns&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;&lt;span style="color: #a31515;"&gt;CodeSnippet&lt;span style="color: blue;"&gt; &lt;span style="color: red;"&gt;Format&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;1.0.0&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;&lt;span style="color: #a31515;"&gt;Header&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Title&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; propn&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;Title&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Shortcut&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; propn&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;Shortcut&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Description&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;Code snippet for a property that calls OnPropertyChanged() in the setter (to assist in INotifyPropertyChanged implementation).&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;/&lt;span style="color: #a31515;"&gt;Description&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Author&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; Aaron Hoffman&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;Author&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;SnippetTypes&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;&lt;span style="color: #a31515;"&gt;SnippetType&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; Expansion&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;SnippetType&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;/&lt;span style="color: #a31515;"&gt;SnippetTypes&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;/&lt;span style="color: #a31515;"&gt;Header&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;&lt;span style="color: #a31515;"&gt;Snippet&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Declarations&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;&lt;span style="color: #a31515;"&gt;Literal&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;ID&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; type&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;ID&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;ToolTip&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; Property type&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;ToolTip&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;Default&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; int&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;Default&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;/&lt;span style="color: #a31515;"&gt;Literal&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;&lt;span style="color: #a31515;"&gt;Literal&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;ID&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; property&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;ID&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;ToolTip&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; Property name&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;ToolTip&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;          &amp;lt;&lt;span style="color: #a31515;"&gt;Default&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; MyProperty&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;Default&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;/&lt;span style="color: #a31515;"&gt;Literal&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;/&lt;span style="color: #a31515;"&gt;Declarations&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;&lt;span style="color: #a31515;"&gt;Code&lt;span style="color: blue;"&gt; &lt;span style="color: red;"&gt;Language&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;csharp&lt;/span&gt;&lt;span style="color: black;"&gt; "&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;        &amp;lt;![CDATA[&lt;span style="color: grey;"&gt;public $type$ $property$&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;    &lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;        get &lt;span style="color: black;"&gt;{&lt;/span&gt; return _$property$; &lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;        set&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;        &lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;            if (_$property$ != value)&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;            &lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;                _$property$ = value;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;                OnPropertyChanged($property$PropertyName);&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;            &lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;        &lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;    &lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;private $type$ _$property$;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: grey;"&gt;public const string $property$PropertyName = "$property$";$end$&lt;span style="color: blue;"&gt;]]&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;      &amp;lt;/&lt;span style="color: #a31515;"&gt;Code&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;    &amp;lt;/&lt;span style="color: #a31515;"&gt;Snippet&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;  &amp;lt;/&lt;span style="color: #a31515;"&gt;CodeSnippet&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;span style="color: #a31515;"&gt;CodeSnippets&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0em;"&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;---------&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_MIQt5C3Lnlo/TJ9_lv2qszI/AAAAAAAAAEg/heDypu1CUd8/s1600/CodeProducedBySnippet2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="412" src="http://4.bp.blogspot.com/_MIQt5C3Lnlo/TJ9_lv2qszI/AAAAAAAAAEg/heDypu1CUd8/s640/CodeProducedBySnippet2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Take the XML above and save it in a file named propn.snippet. &amp;nbsp;This will be referenced later during the import process.&lt;br /&gt;&lt;br /&gt;This code snippet relies on a OnPropertyChanged(string propertyName) method already existing. &amp;nbsp;This is easily done by extending all of your ViewModel classes from a ViewModel Base Class that implements the INotifyPropertyChanged interface, and placing the method there. &amp;nbsp;Here is a simple example:&lt;br /&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: consolas;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ViewModelBase&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;event&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PropertyChangedEventHandler&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;PropertyChanged;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;virtual&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;OnPropertyChanged(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;propertyName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;eh&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight: 700;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: 700;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PropertyChanged;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;(eh&amp;nbsp;&lt;/span&gt;&lt;span style="font-weight: 700;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;!=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eh(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PropertyChangedEventArgs&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(propertyName));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To "Install" the code snippet, select "Code Snippets Manager..." from the Tools menu.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MIQt5C3Lnlo/TJ-Ac2fDTJI/AAAAAAAAAEk/b0s60B8Zl2o/s1600/CodeSnippetManager.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_MIQt5C3Lnlo/TJ-Ac2fDTJI/AAAAAAAAAEk/b0s60B8Zl2o/s400/CodeSnippetManager.png" width="327" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When the Code Snippet Manager window opens, make sure the Language is set to C# and click the Import... Button.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MIQt5C3Lnlo/TJ-AzYFQVmI/AAAAAAAAAEo/RiiIq8PH1cQ/s1600/CodeSnippetManagerWindow.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://3.bp.blogspot.com/_MIQt5C3Lnlo/TJ-AzYFQVmI/AAAAAAAAAEo/RiiIq8PH1cQ/s400/CodeSnippetManagerWindow.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Find where you created and saved the XML above into a file named propn.snippet, and select that file to import. &amp;nbsp;The Import Code Snippet window will open. &amp;nbsp;See that the "My Code Snippets" folder is selected and click the Finish button.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_MIQt5C3Lnlo/TJ-CWwswhpI/AAAAAAAAAEs/McSA4EWwlpY/s1600/MyCodeSnippet.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://2.bp.blogspot.com/_MIQt5C3Lnlo/TJ-CWwswhpI/AAAAAAAAAEs/McSA4EWwlpY/s400/MyCodeSnippet.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Click OK on the Code Snippet Manager window. &amp;nbsp;Now within any C# file you should be able to start typing "&lt;b&gt;propn&lt;/b&gt;" then &lt;b&gt;Tab &lt;/b&gt;and &lt;b&gt;Tab &lt;/b&gt;and the code snippet should be inserted into the file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-1342495955894191032?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/1342495955894191032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=1342495955894191032' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1342495955894191032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1342495955894191032'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2010/09/visual-studio-code-snippet-for-notify.html' title='Visual Studio Code Snippet for a Notify Property (INotifyPropertyChanged)'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MIQt5C3Lnlo/TJ9_lv2qszI/AAAAAAAAAEg/heDypu1CUd8/s72-c/CodeProducedBySnippet2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-4381045526420848727</id><published>2010-04-28T20:55:00.000-05:00</published><updated>2010-04-28T20:55:21.369-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Silverlight Color Picker ComboBox (DropDownList)</title><content type='html'>During a Silverlight project I finished up a while ago I needed to create a "simple" Color Picker ComboBox (or DropDownList for us ASP.NET Developers).&amp;nbsp; By "simple" I mean limited to only a handful of colors, not as complex as something like Paint.NET (read PhotoShop) would provide.&amp;nbsp; This is the easiest solution that I found.&lt;br /&gt;&lt;br /&gt;The first thing you need to know is that the ComboBox has an &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate%28v=VS.95%29.aspx"&gt;ItemTemplate&lt;/a&gt;.&amp;nbsp; This template allows you to completely control the look and feel of each entry in the ComboBox.&amp;nbsp; From simple things like binding to a property to change the background color (hint hint, that is what we are about to do), to more complex things like changing the entire template based on the type of class being bound to this item in the ComboBox (ex: the ComboBox is bound to a list of "fruits" some are apples and some are bananas.&amp;nbsp; The apples all use one template, the bananas use a completely different template - powerful).&lt;br /&gt;&lt;br /&gt;We'll be binding this ComboBox to a list of strings.&amp;nbsp; Each string we be the Hex representation of an eventual Color in the ComboBox.&amp;nbsp; Here is the ViewModel that holds the List (and "SelectedColor" property that holds the currently selected color)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(230, 230, 255) none repeat scroll 0% 0%; color: black; font-family: Courier New; font-size: 10pt;"&gt; &lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyViewModel&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; SelectedColor { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; Colors { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MyViewModel()&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Colors = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;() {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"000000"&lt;/span&gt;,&lt;span style="color: green;"&gt;//black&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"404040"&lt;/span&gt;,&lt;span style="color: green;"&gt;//gray&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"808080"&lt;/span&gt;,&lt;span style="color: green;"&gt;//light gray&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FFFFFF"&lt;/span&gt;,&lt;span style="color: green;"&gt;//white&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"402000"&lt;/span&gt;,&lt;span style="color: green;"&gt;//brown&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FF0000"&lt;/span&gt;,&lt;span style="color: green;"&gt;//red&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FF8000"&lt;/span&gt;,&lt;span style="color: green;"&gt;//orange&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FFFF00"&lt;/span&gt;,&lt;span style="color: green;"&gt;//yellow&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"00FF00"&lt;/span&gt;,&lt;span style="color: green;"&gt;//green&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"008000"&lt;/span&gt;,&lt;span style="color: green;"&gt;//dark green&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"0080FF"&lt;/span&gt;,&lt;span style="color: green;"&gt;//light blue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"0000FF"&lt;/span&gt;,&lt;span style="color: green;"&gt;//blue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"400080"&lt;/span&gt;,&lt;span style="color: green;"&gt;//purple&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"8000FF"&lt;/span&gt;,&lt;span style="color: green;"&gt;//light purple&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FF00FF"&lt;/span&gt;,&lt;span style="color: green;"&gt;//pink&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"FF80FF"&lt;/span&gt;&lt;span style="color: green;"&gt;//light pink&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then we'll need to create a new &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx"&gt;IValueConverter &lt;/a&gt;that will assist us in binding the strings to the ComboBox (and more specifically the Background Brush in the ItemTemplate).&amp;nbsp; We can call the IValueConverter simply, StringToBrushConverter.&amp;nbsp; IValueConverter is a fairly easy interface to implement, it only has two methods, Covert and ConvertBack.&amp;nbsp; (As far as I can tell, the &lt;a href="http://msdn.microsoft.com/en-us/library/system.drawing.colorconverter.aspx"&gt;ColorConverter &lt;/a&gt;class is not in Silverlight yet, so the code is a bit messy for converting back and forth, but it'll do.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(230, 230, 255) none repeat scroll 0% 0%; color: black; font-family: Courier New; font-size: 10pt;"&gt; &lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;StringToBrushConverter&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;IValueConverter&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt; Convert(&lt;span style="color: blue;"&gt;object&lt;/span&gt; value, &lt;span style="color: #2b91af;"&gt;Type&lt;/span&gt; targetType, &lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter, System.Globalization.&lt;span style="color: #2b91af;"&gt;CultureInfo&lt;/span&gt; culture)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; colorString = value &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;.IsNullOrEmpty(colorString))&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt;.FromArgb(255, 0, 0, 0));&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt; c = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c.A = 255;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c.R = &lt;span style="color: blue;"&gt;byte&lt;/span&gt;.Parse(colorString.Substring(0, 2), &lt;span style="color: #2b91af;"&gt;NumberStyles&lt;/span&gt;.HexNumber);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c.G = &lt;span style="color: blue;"&gt;byte&lt;/span&gt;.Parse(colorString.Substring(2, 2), &lt;span style="color: #2b91af;"&gt;NumberStyles&lt;/span&gt;.HexNumber);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; c.B = &lt;span style="color: blue;"&gt;byte&lt;/span&gt;.Parse(colorString.Substring(4, 2), &lt;span style="color: #2b91af;"&gt;NumberStyles&lt;/span&gt;.HexNumber);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SolidColorBrush&lt;/span&gt;(c);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;catch&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt;.FromArgb(255, 0, 0, 0));&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color: blue;"&gt;object&lt;/span&gt; value, &lt;span style="color: #2b91af;"&gt;Type&lt;/span&gt; targetType, &lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter, System.Globalization.&lt;span style="color: #2b91af;"&gt;CultureInfo&lt;/span&gt; culture)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//NOTE "value as Color" - doesn't work&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (value &lt;span style="color: blue;"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt; c = (&lt;span style="color: #2b91af;"&gt;Color&lt;/span&gt;)value;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; c.ToString();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"000000"&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Okay, so we've got our data, and the converter, so now we just need to wire it up.&amp;nbsp; First we add the StringToBrushConverter as a Resource for the UserControl.&amp;nbsp; Then we define the ComboBox's ItemTemplate.&amp;nbsp; Now at first I thought I could use a simple Canvas in the ItemTemplate and set its Background to a SolidColorBrush that was the same color as the string, but for some reason in my project that was just not working.&amp;nbsp; The Canvas was not aligning properly in the ComboBox.&amp;nbsp; When I pulled the code out and put it into its own solution, it worked fine.&amp;nbsp; I ended up Placing a Grid in the ItemTemplate and setting its background color, then placing a single TextBlock inside the grid and setting its Height and Width to size the grid....&amp;nbsp; try the Canvas first, but if that doesn't work for you I've included the "alternate solution".&lt;br /&gt;&lt;br /&gt;Note the use of "Binding ." in the Binding statement of the Background property.&amp;nbsp; That means Bind to the "entire" current DataContext itself and not a property of the current DataContext.&amp;nbsp; (the ComboBox binds to the "Colors" collection, each Item binds to a individual string in the collection, so saying "Binding ." is saying bind to that string.&amp;nbsp; A more common scenario might be to bind to a List of Employees, and bind each Item to the "Name" property.&amp;nbsp; If you said "Binding ." in that case, you would be binding to a single Employee instance in the Employees collection)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(230, 230, 255) none repeat scroll 0% 0%; color: black; font-family: Courier New; font-size: 10pt;"&gt; &lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MainPage&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;UserControl&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MainPage()&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Loaded += (s, e) =&amp;gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.DataContext = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MyViewModel&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: rgb(230, 230, 255) none repeat scroll 0% 0%; color: black; font-family: Courier New; font-size: 10pt;"&gt; &lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Adh.Silverlight.MainPage"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;d&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;mc&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;adh&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:Adh.Silverlight"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; mc&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Ignorable&lt;/span&gt;&lt;span style="color: blue;"&gt;="d"&lt;/span&gt;&lt;span style="color: red;"&gt; d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;DesignWidth&lt;/span&gt;&lt;span style="color: blue;"&gt;="640"&lt;/span&gt;&lt;span style="color: red;"&gt; d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;DesignHeight&lt;/span&gt;&lt;span style="color: blue;"&gt;="480"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;adh&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StringToBrushConverter&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="StringToBrushConverter"&amp;gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;adh&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StringToBrushConverter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;="LayoutRoot"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ComboBox&lt;/span&gt;&lt;span style="color: red;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: red;"&gt; Colors&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;span style="color: red;"&gt; SelectedItem&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: red;"&gt; Color&lt;/span&gt;&lt;span style="color: blue;"&gt;,&lt;/span&gt;&lt;span style="color: red;"&gt; Mode&lt;/span&gt;&lt;span style="color: blue;"&gt;=TwoWay}"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="140"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="24"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Canvas&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: blue;"&gt; .,&lt;/span&gt;&lt;span style="color: red;"&gt; Converter&lt;/span&gt;&lt;span style="color: blue;"&gt;={&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red;"&gt; StringToBrushConverter&lt;/span&gt;&lt;span style="color: blue;"&gt;}}"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="18"&amp;gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;Canvas&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&lt;!--&lt;grid Background="{Binding ., Converter={StaticResource StringToBrushConverter}}" HorizontalAlignment="Stretch"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;textblock Width="100" Height="18"&gt;&lt;/TextBlock&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: green;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/Grid&gt;--&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;ComboBox.ItemTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;ComboBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And there it is, that's all there is to it.&amp;nbsp; Hope you can find a use for this somewhere. &lt;br /&gt;&lt;br /&gt;-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-4381045526420848727?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/4381045526420848727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=4381045526420848727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/4381045526420848727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/4381045526420848727'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2010/04/silverlight-color-picker-combobox.html' title='Silverlight Color Picker ComboBox (DropDownList)'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-175262937137785665</id><published>2010-04-11T16:44:00.000-05:00</published><updated>2010-04-11T16:44:19.708-05:00</updated><title type='text'>Wisconsin Film Festival</title><content type='html'>My First Point of 2010!&amp;nbsp; I'm not sure what happened to my "top 5" lists from 2009, those were suppose to be posts at one time, but I never got around to writing them.&amp;nbsp; The lists were made, (highlights include New Super Mario Bros and Uncharted 2) but the posts were never written.&amp;nbsp; I've also been really busy this year with preparation for GDC and Microsoft's MIX 10 conference...&amp;nbsp; those probably should have been blogs posts as well, hu?&lt;br /&gt;&lt;br /&gt;So I guess I'll start this year off with the Wisconsin Film Festival.&amp;nbsp; This is the first year that I've actually bought tickets before the night of the movie!&amp;nbsp; In the past, the movies I've wanted to see have always sold out early, so I've always had to do "Rush" tickets and luck out by getting one at the door.&amp;nbsp; It hasn't failed me yet, and hopefully I can keep that streak alive this year because there are a few on my list that are already sold out.&amp;nbsp; For the most part however, I'll already have my tickets!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the list:&lt;br /&gt;&lt;br /&gt;The Art of the Steal, (art and politics in Philadelphia)&lt;br /&gt;Wed, 7:00pm,  MMoCA --- rush only&lt;br /&gt;(Sun, 1:30 MMoCA)&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3006#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3006#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OSS  117: Lost in Rio (james bond style comedy)&lt;br /&gt;Wed, 10pm, Orpheum&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3122#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3122#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One Crazy Ride (motorcycle ride through remote india)&lt;br /&gt;Thr,  7:30pm,  Play Circle --- rush only&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3119#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3119#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Point Traverse (remote town life)&lt;br /&gt;Thr, 9:30-11:30, Chazen&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3130" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3130&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Scenesters (comedy about filming crime scenes)&lt;br /&gt;Fri, 10pm,  Wis  Union&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3143#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3143#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sweetgrass (modern cowboy)&lt;br /&gt;Sat, 11am, Orpheum&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3163#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3163#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Special When Lit (Pinball Movie - must see)&lt;br /&gt;Sat, 1:00pm, Chazen&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3156#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3156#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Passenger Side (comedy)&lt;br /&gt;Sat, 6pm-7:30pm, Wis Union&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3127#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3127#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paddle to Seattle (journey from Alaska to Seattle)&lt;br /&gt;Sun, 1:30pm,  Wis  Union&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?EventNumber=3125&amp;amp;notepg=1#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?EventNumber=&lt;wbr&gt;&lt;/wbr&gt;3125&amp;amp;notepg=1#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Beyond the Pole ("green" journey to the north pole)&lt;br /&gt;Sun, 6pm, Wis   Union&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3015" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3015&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Honorable Mentions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Movies I liked the sound of but will probably not have time for....&lt;br /&gt;&lt;br /&gt;Agrarian Utopia, (rice farming is a hard life)&lt;br /&gt;Sun, 1:30 Chazen&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3004#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3004#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Black (short. thriller)&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/prognote.php?ProgCode=SHX02&amp;amp;notepg=1" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;prognote.php?ProgCode=SHX02&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;notepg=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cannon Falls (short. wisconsin recording studio)&lt;br /&gt;Sun 1:30pm, UW  Cinematheque&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3021" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3021&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Girl with the Dragon Tattoo (Sweden Murder investigation)&lt;br /&gt;Sat,  7:30pm, Orpheum &lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3061" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3061&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Human Terrain (Iraqi village training in California)&lt;br /&gt;Fri, 5pm,  Chazen&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3076#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3076#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last Train Home (families on chinese new year)&lt;br /&gt;Fri, 1pm, Stage  Door&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3084#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3084#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Scrap (bishops castle, scrap metal projects)&lt;br /&gt;Sun, 6:30pm, Monona  Terrace&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3144#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3144#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Matter of Size (comedy about Israeli Sumo wrestling)&lt;br /&gt;Sat, 1pm,  Orpheum&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3099#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3099#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Terribly Happy (thriller, experimental)&lt;br /&gt;Sun, 4:30pm, Orpheum&lt;br /&gt;&lt;a href="http://filmguide.wifilmfest.org/tixSYS/2010/xslguide/eventnote.php?notepg=1&amp;amp;EventNumber=3166#" target="_blank"&gt;http://filmguide.wifilmfest.&lt;wbr&gt;&lt;/wbr&gt;org/tixSYS/2010/xslguide/&lt;wbr&gt;&lt;/wbr&gt;eventnote.php?notepg=1&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;EventNumber=3166#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope to see you at the show!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-175262937137785665?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/175262937137785665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=175262937137785665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/175262937137785665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/175262937137785665'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2010/04/wisconsin-film-festival.html' title='Wisconsin Film Festival'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-8220189067033610292</id><published>2009-12-19T11:10:00.006-06:00</published><updated>2009-12-22T13:24:08.595-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>ADH .NET Helper Library</title><content type='html'>&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;(please link to this page using &lt;/span&gt;&lt;a href="http://tinyurl.com/adhlib"&gt;&lt;span style="font-size: small;"&gt;http://tinyurl.com/adhlib&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;I plan to slowly put this helper library together over time. There are a lot of helper classes and libraries out there - the goal of this project is to make the source classes/files easy to extract a single file at a time for use within your projects. The entire libraries/assemblies can still be referenced as well, but sometimes it is easier to just copy a single file. Enjoy!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;source code download:&amp;nbsp;&lt;a href="http://aaronhoffman.googlecode.com/files/AdhLibv3.5.0.zip"&gt;http://aaronhoffman.googlecode.com/files/AdhLibv3.5.0.zip&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Live Test Sites (also included in source code):&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Silverlight Navigation: &lt;a href="http://tinyurl.com/adhlibsl"&gt;http://tinyurl.com/adhlibsl&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;Articles Highlighting Project Features:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(I will link to future articles here)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-Aaron&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-8220189067033610292?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/8220189067033610292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=8220189067033610292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8220189067033610292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8220189067033610292'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/12/adh-net-helper-library.html' title='ADH .NET Helper Library'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-7907678461753901094</id><published>2009-12-16T12:49:00.003-06:00</published><updated>2009-12-22T13:24:40.368-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Simple Keystroke Automation in .NET (Scott Hanselman's Http Button)</title><content type='html'>--&lt;br /&gt;Scott Hanselman (&lt;a href="http://www.hanselman.com/"&gt;http://www.hanselman.com/&lt;/a&gt;,&amp;nbsp;&lt;a href="http://twitter.com/shanselman"&gt;http://twitter.com/shanselman&lt;/a&gt;) recently tweet'd, "&lt;i&gt;I need a keyboard with an "http://www." button.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;To which I replied, "&lt;i&gt;@shanselman you still type the "http" part? I didn't think you had to anymore...&lt;/i&gt;" &amp;nbsp;Oooh, hahahaha, how smart and funny am I!? &amp;nbsp;....Apparently not very... :-)&lt;br /&gt;&lt;br /&gt;shanselman responded (as well as to others with the same smart remarks), "&lt;i&gt;@aaron_hoffman in tweetdeck or Twitter, you do.&lt;/i&gt;" &amp;nbsp;--Aaaah, I get it now, he's not in a browser!&amp;nbsp;okay, he has me in &lt;a href="http://en.wikipedia.org/wiki/Check_(chess)"&gt;Check&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now I just had to solve this problem. &amp;nbsp;Well automation/degree in laziness (with &lt;i&gt;years&lt;/i&gt; of laziness experience) to the&amp;nbsp;rescue! &amp;nbsp;At first I thought &lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx"&gt;PowerShell&lt;/a&gt;&amp;nbsp;- but since I am on a WinXP SP2 machine, that wouldn't do. &amp;nbsp;I'll have to fall back to the console app &amp;amp; desktop shortcut combination of yester-system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps to Simple Keystroke Automation&lt;/b&gt; (w/ WinXP SP2&amp;nbsp;Handicap)&lt;br /&gt;&lt;br /&gt;1. Create .NET Console App&lt;br /&gt;2. Write/Build App.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2.1 &amp;nbsp;Note &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx"&gt;System.Windows.Forms.SendKeys&lt;/a&gt; class&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2.2 &amp;nbsp;Note text string of "http://www."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #e6e6f0; color: black; font-family: Courier New; font-size: 8pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; System.Windows.Forms.&lt;span style="color: #2b91af;"&gt;SendKeys&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;SendWait&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;@"http://www."&lt;/span&gt;);&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3. Create Shortcut to New App On Desktop&lt;br /&gt;4. Set properties correctly:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4.1 &amp;nbsp;Shortcut key: "Ctrl + Alt + H"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4.2 &amp;nbsp;Run: "Minimized"&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_MIQt5C3Lnlo/SyknyAfPnVI/AAAAAAAAAEI/r2658JRWv5M/s1600-h/SendKeyUrlBeginProperties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_MIQt5C3Lnlo/SyknyAfPnVI/AAAAAAAAAEI/r2658JRWv5M/s320/SendKeyUrlBeginProperties.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;5. Go Back to Twitter and Press the "http://www." button! &amp;nbsp;(Ctrl + Alt + H)&lt;br /&gt;6. This should run the New App, which should send the text string as keystrokes to the currently active window.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Checkmate&lt;/b&gt;! &amp;nbsp; But wait. &amp;nbsp;Have I been played? &amp;nbsp;Maybe this is what he was hoping for all along!? &amp;nbsp;He posts a need on Twitter and someone does the work for him.... well played sir.... well played indeed. &amp;nbsp;:-)&lt;br /&gt;&lt;br /&gt;--&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-7907678461753901094?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/7907678461753901094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=7907678461753901094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/7907678461753901094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/7907678461753901094'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/12/simple-keystroke-automation-in-net.html' title='Simple Keystroke Automation in .NET (Scott Hanselman&apos;s Http Button)'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MIQt5C3Lnlo/SyknyAfPnVI/AAAAAAAAAEI/r2658JRWv5M/s72-c/SendKeyUrlBeginProperties.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-6883459492690319594</id><published>2009-10-30T08:11:00.006-05:00</published><updated>2009-10-30T08:52:58.065-05:00</updated><title type='text'>Twitter Goes the Way of the Dodo</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;I logged into Twitter this morning and got this message:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_MIQt5C3Lnlo/SurvXYu2TCI/AAAAAAAAADo/yOezzOHC_Gw/s320/TwitterLists2.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 71px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5398390288411937826" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;it reads, "New! Lists.  A great way to organize the people you follow and discover new and interesting accounts. (BETA)"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought to myself, "Finally!"  But if you really think about it, is this good for Twitter?  I think one of the reasons Twitter has been so successful this far is because it is easy to use.  It is &lt;i&gt;too &lt;/i&gt;easy to use.  It was amazing to me, at first, that you could get any benefit out of using it at all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I have.  From getting links to press releases faster than my RSS feed, to actually connecting with "developer celebrities" where an email would have been lost, twitter has played its role.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But then I started to think, "Will I be on anyones 'top friends' list?"  The answer for most of us, aside from our actual friends, is probably not.  So will this allow us to, "discover new and interesting accounts," as Twitter's spin suggests, or will it actually create another barrier between "us" and "them"?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I know I will start to only check my 'top friends' tweets, will &lt;i&gt;they&lt;/i&gt;?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-6883459492690319594?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/6883459492690319594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=6883459492690319594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6883459492690319594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6883459492690319594'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/10/twitter-goes-way-of-dodo.html' title='Twitter Goes the Way of the Dodo'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MIQt5C3Lnlo/SurvXYu2TCI/AAAAAAAAADo/yOezzOHC_Gw/s72-c/TwitterLists2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-1633427832544846814</id><published>2009-10-29T16:31:00.008-05:00</published><updated>2009-12-22T13:25:00.827-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Unique Characters</title><content type='html'>Ever notice how similar a lot of the "English" alphabet's characters look?  The guy who put this together must have really phoned it in that day.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He really could only come up with these:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;&lt;span style="font-family: 'Courier New'; font-size: 18pt;"&gt;ABCDEFGHIJK_MNOPQRSTUV_XY_&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;and then just flipped a few around a bit to get up to 26:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;J L&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;M W&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;S Z&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it isn't just those three, a lot of the original list look eerily similar to each other as well, but I guess we'll count them:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;B R&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;E F&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;H K&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;M N&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;O Q&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;U V&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;T Y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;Y X&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;but then he needed to come up with 10 more numbers... well none of those are unique!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;0 O&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;1 I&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;2 Z&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;3 E&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;4 P&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;5 S&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;6 G&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;7 L&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;8 B&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: 24px;"&gt;9 P&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So in the end, if you are looking for unique characters that you can use, that will not be confused with any other characters, you're only left with:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New'; font-size: 24px;"&gt;&lt;b&gt;A&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;well that isn't very many...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-1633427832544846814?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/1633427832544846814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=1633427832544846814' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1633427832544846814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1633427832544846814'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/10/unique-characters.html' title='Unique Characters'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-1829344758385494075</id><published>2009-10-25T15:06:00.006-05:00</published><updated>2009-10-25T16:12:24.408-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hawkeyes'/><category scheme='http://www.blogger.com/atom/ns#' term='Wallpaper'/><title type='text'>Iowa at Michigan State</title><content type='html'>Iowa played Michigan State last night in East Lansing, Michigan.  I am not a sports writer, so I will not attempt it here, but it was one of the best games of football that I have ever watched.  A total of three field goals through three quarters of play, two goal line stands from under five yards out, and a last minute drive from behind by the Hawkeyes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;There were  records broken on both sides.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuS-LlqE8vI/AAAAAAAAADI/vE7RSHlCeaY/s1600-h/IowaVsMichiganState.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuS-LlqE8vI/AAAAAAAAADI/vE7RSHlCeaY/s320/IowaVsMichiganState.png" alt="" id="BLOGGER_PHOTO_ID_5396647359793132274" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MIQt5C3Lnlo/SuS4bwQirPI/AAAAAAAAADA/zAduwne7O0k/s1600-h/IowaVsMichiganState.png"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Michigan_State_University_Fight_Song"&gt;&lt;span style="font-style: italic;"&gt;All through the game they fought.&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-1829344758385494075?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/1829344758385494075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=1829344758385494075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1829344758385494075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1829344758385494075'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/10/iowa-at-michigan-state.html' title='Iowa at Michigan State'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuS-LlqE8vI/AAAAAAAAADI/vE7RSHlCeaY/s72-c/IowaVsMichiganState.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-1066414705617399638</id><published>2009-08-08T16:26:00.003-05:00</published><updated>2009-10-25T16:42:24.885-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wallpaper'/><category scheme='http://www.blogger.com/atom/ns#' term='Norway'/><title type='text'>Norge</title><content type='html'>I'm not sure why, but I had a sudden rush of Norwegian pride today.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuTELLZST2I/AAAAAAAAADY/9u09QlSO7zA/s1600-h/NorwegianFlagOnBlack.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuTELLZST2I/AAAAAAAAADY/9u09QlSO7zA/s320/NorwegianFlagOnBlack.png" alt="" id="BLOGGER_PHOTO_ID_5396653949813149538" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-1066414705617399638?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/1066414705617399638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=1066414705617399638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1066414705617399638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1066414705617399638'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/08/norge.html' title='Norge'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MIQt5C3Lnlo/SuTELLZST2I/AAAAAAAAADY/9u09QlSO7zA/s72-c/NorwegianFlagOnBlack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-8867226523709263643</id><published>2009-07-17T15:24:00.005-05:00</published><updated>2009-12-22T13:25:37.449-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Reaction Time Tester</title><content type='html'>I wrote this Silverlight app for my Cousin.  The trickiest part was raising an event after a random amount of time for the "Wait..." portion of the test.  I ended up using a "DispatcherTimer" and set the interval to a Random amount of seconds.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" scrolling="no" src="http://silverlight.services.live.com/invoke/85510/ReactionTimeTester/iframe.html" style="height: 300px; width: 400px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Have Fun!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-8867226523709263643?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/8867226523709263643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=8867226523709263643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8867226523709263643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8867226523709263643'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/07/reaction-time-tester.html' title='Reaction Time Tester'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-1034479455022207927</id><published>2009-07-02T10:52:00.007-05:00</published><updated>2009-12-22T13:26:07.752-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Monty Hall Test Simulator</title><content type='html'>&lt;div&gt;Jeff Atwood (&lt;a href="http://www.codinghorror.com/blog/"&gt;Coding Horror&lt;/a&gt;, &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;) recently wrote a &lt;a href="http://www.codinghorror.com/blog/archives/001278.html"&gt;blog post &lt;/a&gt;about the &lt;a href="http://en.wikipedia.org/wiki/Monty_Hall_problem"&gt;Monty Hall Problem&lt;/a&gt;.  So I thought I'd write a little app that simulates the tests.   I have always thought the contestant has three options, Always Switch (66%), Always Stay (33%), AND Pick Again (50%).  People who say your chance is 50/50 after one door is taken out of the equation, are &lt;i&gt;Correct&lt;/i&gt;, IF you randomly choose the second door at that time.  Check out the app below.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WD = Winning Door.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;FC = First Choice.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;RD = Removed Door.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SC = Second Choice.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe frameborder="0" scrolling="no" src="http://silverlight.services.live.com/invoke/85510/MontyHallTestSimulator/iframe.html" style="height: 360px; width: 500px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-1034479455022207927?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/1034479455022207927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=1034479455022207927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1034479455022207927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/1034479455022207927'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/07/monty-hall-test-simulator.html' title='Monty Hall Test Simulator'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-8990721704531853187</id><published>2009-02-17T18:19:00.019-06:00</published><updated>2009-12-22T13:26:50.214-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>LINQ is not just LINQ to SQL</title><content type='html'>&lt;span style="font-style: italic;"&gt;Deconstructing a LINQ Statement&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;(download source code: &lt;a href="http://aaronhoffman.googlecode.com/files/AaronHoffmanLinqDemov01.zip"&gt;http://aaronhoffman.googlecode.com/files/AaronHoffmanLinqDemov01.zip&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LINQ is a valuable tool, but because of the way it is usually demonstrated, developers think that its only use is for querying a Microsoft SQL Server database. This is because what is usually being demonstrated along with LINQ is LINQ to SQL. &lt;a href="http://msdn.microsoft.com/en-us/library/bb308959.aspx"&gt;LINQ&lt;/a&gt; is not just &lt;a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx"&gt;LINQ to SQL&lt;/a&gt;. I like to think of LINQ as a shorthand (or syntax shortcut) way of writing code - a way to write less lines of code (or simplify code), but still perform the same operations (kind of like what foreach is to the for loop).&lt;br /&gt;&lt;br /&gt;I would like to demonstrate LINQ in a way that does not use LINQ to SQL. I will break down a LINQ statement into lines of code that developers might be more familiar with in an attempt to show what is going on under the covers. I will start with code that hopefully everyone has seen/written before, then build up to a LINQ statement that performs the same operation. This way you will see what the compiler turns your LINQ Statements into.&lt;br /&gt;&lt;br /&gt;In each example we will search through a collection of Customer objects to find all the Customers that meet our criteria (that "pass our test"). The following statement will be used in each example to filter the collection (I will refer to this as: &lt;strong&gt;The Test&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;Customer.CompanyName.ToUpper().StartsWith(OUR_STRING.ToUpper())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 1&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;In this example we will use a foreach loop to iterate through a collection of Customers. If a Customer passes our test, we will add it to a second collection of Customers... That’s it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 2&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;In this example we will use the foreach loop again, but we will move &lt;strong&gt;The Test&lt;/strong&gt; out of the loop and into its own class. This can be a little confusing – it seems like an extra/unnecessary step. This is just to help show you what the compiler does when you write an anonymous method (which we haven’t done yet, but we’re going to...). If this example confuses you, just read on, then come back to it later.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 180%;"&gt;Example 3&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;In this example the foreach loop from the previous examples has been replaced by the FindAll() method. The FindAll() method does exactly what we have been doing manually in the past two examples. It will loop through the collection of Customers and test each Customer to see if it passes our test. If it does, it will add that Customer to a second collection and eventually return that collection. All we have to do is pass in &lt;strong&gt;The Test&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, if you have not worked with delegates before, this is where it might get a little fuzzy. Although, you probably have worked with delegates before without knowing it. If you have ever handled a Button’s Click event, you have worked with delegates.&lt;br /&gt;&lt;br /&gt;You can think of a Delegate like a method that can be passed around like a variable (kind of like a method pointer). And Delegates also have types. The type of a delegate defines what the method signature needs to look like, but not the logic within the method. A Button’s Click Event Delegate has a type of EventHandler. The definition of which looks like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;public delegate &lt;strong&gt;void&lt;/strong&gt; EventHandler(&lt;strong&gt;object&lt;/strong&gt; sender, &lt;strong&gt;EventArgs&lt;/strong&gt; e);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And so, your Button_Click method needs to look like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;public &lt;strong&gt;void&lt;/strong&gt; Button1_Click(&lt;strong&gt;object&lt;/strong&gt; sender, &lt;strong&gt;EventArgs&lt;/strong&gt; e) { }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Your button_click method needs to return &lt;strong&gt;void&lt;/strong&gt; and have two parameters, an &lt;strong&gt;object&lt;/strong&gt; and an &lt;strong&gt;EventArgs&lt;/strong&gt; class. The name of the method and the logic within it do not matter.&lt;br /&gt;&lt;br /&gt;Now back to the FindAll() method. The FindAll() method has a single parameter that is a Delegate of type Predicate&amp;lt;t&amp;gt;. Here is the definition of the Predicate&amp;lt;t&amp;gt; Delegate:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;public delegate bool Predicate&amp;lt;T&amp;gt;(T obj);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, in order to match this delegate type, we need to write a method that returns a Boolean and takes one parameter that is the same type as the Generic List (that is what "&amp;lt;T&amp;gt;" means – in our case that would be a Customer). We can then pass that method in to the FindAll() method so it can use it to test each Customer. Well, we have already written that method, haven’t we? It is the same method that we called within the foreach loop in Example 2. It is &lt;strong&gt;The Test&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;public bool CompanyNameStartsWith(Customer c)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;return c.CompanyName.ToUpper().StartsWith(CompanyName.ToUpper());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-size: 85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Take a look at the code for Example 3. The foreach loop has been replaced by the FindAll() method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 4&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;If this isn’t making much sense to you, just stick with it, you don’t need to know all of the inner workings of LINQ in order to use LINQ.&lt;br /&gt;&lt;br /&gt;In this example, instead of using the “CompanyNameStartsWith” method we used previously, we just write that logic in-line again. This time, however, we use an anonymous method. Within the FindAll() method call, we write a new method in-line using the delegate() keyword. The benefit of this is that we write less lines of code. And the reason we don’t have to write the code for the class that would hold this one method, is that the compiler does it for us! &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163682.aspx"&gt;Click Here&lt;/a&gt; if you want more information on how this is done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 5&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Another feature that released along with LINQ are &lt;a href="http://blogs.msdn.com/charlie/archive/2008/06/28/lambdas.aspx"&gt;Lambda Expressions&lt;/a&gt;. And like LINQ, I like to think of Lambdas as a syntax shortcut or Shorthand way of writing code. It is a way to write/create delegates in less lines of code. The “delegate” keyword and brackets have been replaced by the new Lambda operator (=&amp;gt;). And we can now re-write the example above in one &lt;em&gt;clean&lt;/em&gt; line of code. A little &lt;em&gt;too&lt;/em&gt; clean, you might say. How does it know what ‘c’ is? Click &lt;a href="http://msdn.microsoft.com/en-us/library/ms173171.aspx"&gt;Here&lt;/a&gt; (and &lt;a href="http://blogs.msdn.com/charlie/archive/2008/06/28/lambdas.aspx"&gt;Here&lt;/a&gt;) for more information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 6&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;The first (and only) example with LINQ! This example does basically what the past examples have done, with a few differences. You probably noticed the ‘var’ keyword. &lt;a href="http://msdn.microsoft.com/en-us/library/bb383973.aspx"&gt;Var&lt;/a&gt; is an example of an implicitly typed local variable. You don’t need to declare the type that will be returned by the LINQ statement (because sometimes it won’t exist yet...), but the compiler will determine the type for you. In this example, we could replace var with IEnumerable&amp;lt;Customer&amp;gt;, but it is a LINQ convention to just use var. (I will not be explaining LINQ syntax here, there are &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx"&gt;plenty of resources&lt;/a&gt; that do that already. I just want to demonstrate what the compiler does to your LINQ statements). Take a look at the code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 7&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;The LINQ query above can also be written using the IEnumerable&amp;lt;T&amp;gt;.Where(Func&amp;lt;T, bool&amp;gt;) extension method. The Where() method is a lot like the FindAll() method, but way better. (I won’t get into why it is better – that is another post). You might then ask, Why would you ever write this as a LINQ statement then? Why don’t we just use the Where() method from the start? This is one of the beauties of LINQ. The Where() method isn’t the only method a LINQ statement is turned into (although, it is probably a popular one). But, when you are writing a LINQ statement, you don’t have to worry about which methods need to get called, you just have to write in one standard syntax, and all the work is done for you by the compiler! Not only does it determine the type that will be returned by the statement, but it also determines which methods need to get called as well! (This process, of course, is a &lt;em&gt;little&lt;/em&gt; more complicated than that – but that is the short and sweet answer). Take a look at the code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;&lt;strong&gt;Example 8&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;There is nothing new in this example. I just wanted to come full circle and show you that the compiler will turn “the meat” of the LINQ statement into a bunch of little methods for you. Methods and Classes that you never had to write!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[see code]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 180%;"&gt;Summary&lt;/span&gt; &lt;/strong&gt;&lt;br /&gt;And that’s it... I hope you were able to learn something from this demonstration. If nothing else, just start using LINQ! Like I said previously, LINQ is not just LINQ to SQL. And you don’t have to know all the inner workings of the compiler to start using it. So Get Started!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-&lt;strong&gt;Aaron Hoffman&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a list of the resources I used to gather information for this post.&lt;br /&gt;&lt;br /&gt;Scott Gu's LINQ to SQL Guide:&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LINQ: .NET Language-Integrated Query&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb308959.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb308959.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LINQ to SQL: .NET Language-Integrated Query for Relational Data&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb425822.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More information about anonymous methods &amp;amp; delegates and how they relate to the compiler&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163682.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163682.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Delegates Overview&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms173171.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms173171.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lambdas&lt;br /&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2008/06/28/lambdas.aspx"&gt;http://blogs.msdn.com/charlie/archive/2008/06/28/lambdas.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;'var' c# reference&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb383973.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb383973.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-8990721704531853187?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/8990721704531853187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=8990721704531853187' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8990721704531853187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/8990721704531853187'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2009/02/linq-is-not-just-linq-to-sql.html' title='LINQ is not just LINQ to SQL'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-3326063894407785170</id><published>2008-12-09T16:32:00.005-06:00</published><updated>2009-11-02T22:01:56.387-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek'/><category scheme='http://www.blogger.com/atom/ns#' term='Wallpaper'/><title type='text'>TMNT Silhouettes Wallpaper</title><content type='html'>never grow up...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_MIQt5C3Lnlo/ST7yWWQjn0I/AAAAAAAAABg/L7--t3rKOqI/s1600-h/TMNTSilhouettes1024x768.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5277922279070867266" src="http://1.bp.blogspot.com/_MIQt5C3Lnlo/ST7yWWQjn0I/AAAAAAAAABg/L7--t3rKOqI/s320/TMNTSilhouettes1024x768.jpg" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;...just get older...&lt;br /&gt;&lt;br /&gt;-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-3326063894407785170?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/3326063894407785170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=3326063894407785170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/3326063894407785170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/3326063894407785170'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2008/12/tmnt-silhouettes-wallpaper.html' title='TMNT Silhouettes Wallpaper'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MIQt5C3Lnlo/ST7yWWQjn0I/AAAAAAAAABg/L7--t3rKOqI/s72-c/TMNTSilhouettes1024x768.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-4758746008935063071</id><published>2008-11-08T14:51:00.003-06:00</published><updated>2009-11-02T22:02:15.285-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hawkeyes'/><category scheme='http://www.blogger.com/atom/ns#' term='Wallpaper'/><title type='text'>Iowa Hawkeyes Desktop Wallpaper</title><content type='html'>With the Hawks playing undefeated Penn State today I thought we could use a little &lt;span style="font-style: italic;"&gt;extra &lt;/span&gt;Hawkeye Cheer. Here are some desktop backgrounds (wallpapers) I made while waiting for the game to start.&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;GO HAWKS!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SRX8wH290MI/AAAAAAAAAA4/CLnYtGcrpts/s1600-h/IowaHawkeyes_BlackGoldReflectRough_1280x800.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266393242953175234" src="http://1.bp.blogspot.com/_MIQt5C3Lnlo/SRX8wH290MI/AAAAAAAAAA4/CLnYtGcrpts/s320/IowaHawkeyes_BlackGoldReflectRough_1280x800.png" style="cursor: pointer; display: block; height: 200px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_MIQt5C3Lnlo/SRX9sDxGx9I/AAAAAAAAABA/3S2i23cKFeM/s1600-h/IowaHawkeyes_BlackGoldWhiteReflectRough_1280x800.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266394272647006162" src="http://2.bp.blogspot.com/_MIQt5C3Lnlo/SRX9sDxGx9I/AAAAAAAAABA/3S2i23cKFeM/s320/IowaHawkeyes_BlackGoldWhiteReflectRough_1280x800.png" style="cursor: pointer; display: block; height: 200px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;Flickr Set (View All):&lt;br /&gt;&lt;a href="http://flickr.com/photos/81686327@N00/sets/72157608766693839/"&gt;http://flickr.com/photos/81686327@N00/sets/72157608766693839/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;Hawks Win! Iowa 24 - Penn St 23&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-4758746008935063071?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/4758746008935063071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=4758746008935063071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/4758746008935063071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/4758746008935063071'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2008/11/iowa-hawkeyes-desktop-wallpaper.html' title='Iowa Hawkeyes Desktop Wallpaper'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MIQt5C3Lnlo/SRX8wH290MI/AAAAAAAAAA4/CLnYtGcrpts/s72-c/IowaHawkeyes_BlackGoldReflectRough_1280x800.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8016829656920012950.post-6817273117171362188</id><published>2008-10-25T09:55:00.005-05:00</published><updated>2009-12-22T13:27:19.662-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Mega Man X Password Generator</title><content type='html'>Check out this Mega Man X Password Generator I put together:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://silverlight.services.live.com/invoke/85510/MegaManXPasswordGenerator/iframe.html"&gt;http://silverlight.services.live.com/invoke/85510/MegaManXPasswordGenerator/iframe.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" scrolling="no" src="http://silverlight.services.live.com/invoke/85510/MegaManXPasswordGenerator/iframe.html" style="height: 640px; width: 641px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8016829656920012950-6817273117171362188?l=aaron-hoffman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aaron-hoffman.blogspot.com/feeds/6817273117171362188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8016829656920012950&amp;postID=6817273117171362188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6817273117171362188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8016829656920012950/posts/default/6817273117171362188'/><link rel='alternate' type='text/html' href='http://aaron-hoffman.blogspot.com/2008/10/first-post.html' title='Mega Man X Password Generator'/><author><name>Aaron Hoffman</name><uri>https://profiles.google.com/104627094648273232182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-YsH56X1moKM/AAAAAAAAAAI/AAAAAAAAAIM/y5WwEkhMoxA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
