<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>caliburn Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/caliburn/Wiki/View.aspx?title=Home</link><description>caliburn Wiki Rss Description</description><item><title>New Comment on "Action Basics"</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;ANCHOR#C14247</link><description>The button markup for Trigger Collection w&amp;#47; Inferred Parameters, Attachment w&amp;#47; Inferred Parameters, and Attachment w&amp;#47; Defaults doesn&amp;#39;t work in Silverlight either. The button stays disabled even when valid parameters are entered for left and right.</description><author>alamb</author><pubDate>Thu, 19 Nov 2009 22:16:06 GMT</pubDate><guid isPermaLink="false">New Comment on "Action Basics" 20091119101606P</guid></item><item><title>New Comment on "Action Basics"</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;ANCHOR#C14246</link><description>The Silverlight code for this example seems to be out of date. I had to change the namespaces to&amp;#58;&amp;#10;xmlns&amp;#58;ca&amp;#61;&amp;#34;clr-namespace&amp;#58;Caliburn.PresentationFramework.Actions&amp;#59;assembly&amp;#61;Caliburn.PresentationFramework&amp;#34;&amp;#10;xmlns&amp;#58;cm&amp;#61;&amp;#34;clr-namespace&amp;#58;Caliburn.PresentationFramework&amp;#59;assembly&amp;#61;Caliburn.PresentationFramework&amp;#34;&amp;#10;xmlns&amp;#58;ct&amp;#61;&amp;#34;clr-namespace&amp;#58;Caliburn.PresentationFramework.Triggers&amp;#59;assembly&amp;#61;Caliburn.PresentationFramework&amp;#34;&amp;#10;&amp;#10;Also the prefix for RoutedMessageTriggerCollection changed to cm instead of ct.</description><author>alamb</author><pubDate>Thu, 19 Nov 2009 21:58:47 GMT</pubDate><guid isPermaLink="false">New Comment on "Action Basics" 20091119095847P</guid></item><item><title>Updated Wiki: BlogsArticlesProjects</title><link>http://caliburn.codeplex.com/wikipage?title=BlogsArticlesProjects&amp;version=10</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Blogs, Articles and Related Projects&lt;/h1&gt;
Below are a list of blogs, articles and projects related to Caliburn in some way.  If you are writing or building anything with Caliburn, we would love to discuss getting you on the site.&lt;br /&gt;
&lt;h2&gt;Prism Stock Trader with Caliburn&lt;/h2&gt;
You may or may not be familiar with the &lt;a href="http://compositewpf.codeplex.com/" class="externalLink"&gt;Prism Stockc Trader&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  It is a reference application created by the p&amp;amp;p team at Microsoft for the purpose of demonstrating solid testable UI architecture.  It addresses several issues related to composite application development.  It is an excellent application to study and learn from.  Marco Amendola is going further by taking the Stock Trader and converting it to take advantage of Caliburn.  You can follow his efforts on &lt;a href="http://marcoamendola.wordpress.com/" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Testing with Caliburn and unhaddins&lt;/h2&gt;
unhaddins is a project led by Fabio Maulo.  It's goal is to provide you with an all-in-one stop shop for NHibernate based projects.  It has some nice extensions for basic NHibernate development and some specific work around using NHibernate on WPF projects.  Jos&amp;#233; F. Romaniello is using unhaddins to build his Chinook Media Manager.  While he is not using Caliburn for the architecture, he is using it for testing.  &lt;a href="http://jfromaniello.blogspot.com/2009/11/chinook-media-manager-tests-databinding.html" class="externalLink"&gt;Here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, you can find a very nice bit of code that uses Caliburn to test all his application's view models.  You may also be interested in following the the development of his media manager on &lt;a href="http://nhforge.org/blogs/nhibernate/archive/2009/08/19/nhibernate-and-wpf-viewmodels-and-views.aspx" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Build an Application with Caliburn And Prism&lt;/h2&gt;
Ryan Rauh is responsible for adding the Prism integration for Caliburn.  If you are interested in using Prism and Caliburn together, have a look at his blog series &lt;a href="http://rauhski.blogspot.com/" class="externalLink"&gt;Build an Application with Caliburn And Prism&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Devlicios&lt;/h2&gt;
Please visit &lt;a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx" class="externalLink"&gt;my blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; where you can read more about Caliburn.  I will be running some how to's and talking more extensively about UI architecture.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Sun, 15 Nov 2009 23:12:22 GMT</pubDate><guid isPermaLink="false">Updated Wiki: BlogsArticlesProjects 20091115111222P</guid></item><item><title>New Comment on "Action Basics"</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;ANCHOR#C14127</link><description>Thanks for the fix.</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 03:00:21 GMT</pubDate><guid isPermaLink="false">New Comment on "Action Basics" 20091104030021A</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=32</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneWay) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&amp;lt;Button Content=&amp;quot;Divide or Multiply&amp;quot;
        cm:Message.Attach=&amp;quot;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneWay) : DivideResult.Text];
                           [Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneWay) : MultiplyResult.Text]&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 03:00:01 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091104030001A</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=31</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneWay) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&amp;lt;Button Content=&amp;quot;Divide or Multiply&amp;quot;
        cm:Message.Attach=&amp;quot;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneWay) : DivideResult.Text];
                                       [Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneWay) : MultiplyResult.Text]&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 02:59:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091104025932A</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=30</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&amp;lt;Button Content=&amp;quot;Divide or Multiply&amp;quot;
        cm:Message.Attach=&amp;quot;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text];
[Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneTime) : MultiplyResult.Text]&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 02:57:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091104025759A</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=29</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&amp;lt;Button Content=&amp;quot;Divide or Multiply&amp;quot;
        cm:Message.Attach=&amp;quot;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]; 
                                       [Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneTime) : MultiplyResult.Text]&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 02:57:29 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091104025729A</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=28</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&amp;lt;Button Content=&amp;quot;Divide or Multiply&amp;quot;
        cm:Message.Attach=&amp;quot;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]; 
                                       [Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneTime) : MultiplyResult.Text]&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 04 Nov 2009 02:56:05 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091104025605A</guid></item><item><title>New Comment on "Action Basics"</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;ANCHOR#C14123</link><description>The OneTime parameter in this example causes the framework to disable the button.  Removing the OneTime parameter or changing it to OneWay fixes the problem.</description><author>JMichelson</author><pubDate>Tue, 03 Nov 2009 19:25:06 GMT</pubDate><guid isPermaLink="false">New Comment on "Action Basics" 20091103072506P</guid></item><item><title>Updated Wiki: Action Basics</title><link>http://caliburn.codeplex.com/wikipage?title=Action Basics&amp;version=27</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Action Basics&lt;/h1&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Building%20Caliburn&amp;referringTitle=Action%20Basics"&gt;Obtain and Build the Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caliburn.codeplex.com/wikipage?title=Project%20Setup&amp;referringTitle=Action%20Basics"&gt;Setting Up a Project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Referenced Assemblies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Caliburn.Core&lt;/li&gt;
&lt;li&gt;Caliburn.PresentationFramework&lt;/li&gt;
&lt;li&gt;Microsoft.Practices.ServiceLocation&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Minimum Configuration&lt;/h3&gt;
&lt;b&gt;Note:&lt;/b&gt; Configuration should be placed in the App.xaml.cs constructor for WPF or the App.xaml.cs Application_Startup for Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
CaliburnFramework
    .ConfigureCore()
    .WithPresentationFramework()
    .Start();
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Using Actions (Based on Samples - Actions)&lt;/h3&gt;Actions are a core feature of Caliburn which can enable a number of UI patterns such as MVC, MVP and Presentation Model (MVVM).  Let's look at a basic usage of Actions.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In your project, create a new class named Calculator.  This will serve as your first controller, and will be the type where we place actions.  Use the code below:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, use the following markup to implement your main Page (for Silverlight) or your Window (for WPF):&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&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:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Page&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.Actions;assembly=Caliburn.Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;xmlns:ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Caliburn.RoutedUIMessaging.Triggers;assembly=Caliburn.RoutedUIMessaging&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;400&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
             &lt;span style="color:Red;"&gt;Height&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;300&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
 
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;ElementName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                              &lt;span style="color:Red;"&gt;Path&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;WPF&lt;/b&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Actions.Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;clr-namespace:Actions&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;xmlns:cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;http://www.caliburnproject.org&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;Title&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Window1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;SizeToContent&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;WidthAndHeight&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;local&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Calculator&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;    
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Action.Target&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Auto&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color:Red;"&gt;Width&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;*&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;left&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;Text&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                       &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBox&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;right&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; 
                     &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;2&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt; &lt;span style="color:Red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Black&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;0 0 0 1&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Margin&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;10 0 0 0&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                    &lt;span style="color:Red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;3&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:Red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Border&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&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:Blue;"&gt;&amp;gt;&lt;/span&gt;
         
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
                                           &lt;span style="color:Red;"&gt;OutcomePath&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=left, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Parameter&lt;/span&gt; &lt;span style="color:Red;"&gt;Value&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;{Binding ElementName=right, Path=Text}&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cal&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Window&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  There are a couple of subtle differences between the WPF and Silverlight versions that should be pointed out.  First, the WPF version can use a single namespace for all of Caliburn's features.  WPF supports this through the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute.aspx" class="externalLink"&gt;XmlnsDefinition&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; attribute which does not function properly in Silverlight.  Second, the syntax for declaring Parameters is slightly different.  Silverlight does not support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" class="externalLink"&gt;ElementName&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; binding and &lt;a href="http://msdn.microsoft.com/en-us/library/ms750509.aspx" class="externalLink"&gt;Freezables&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; in v2 and only partially in v3, therefore it is unable to use straight databinding for parameters values, like WPF.  Instead, it must use ElementName and Path properties to achieve this effect.  You can learn more about the details of parameters &lt;a href="http://caliburn.codeplex.com/wikipage?title=Parameters&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, what does all this markup do? (Don't worry about the quantity of markup, I'll show you how to greatly reduce that later.)  Let's begin by looking at the &amp;lt;Button /&amp;gt; element.  Notice the use of the Message.Triggers attached property.  With this property we can add a set of message sending triggers to any element.  In this case, we have specified the use of a single EventMessageTrigger (see &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;Message Triggers&lt;/a&gt;).  EventMessageTriggers allow us to use the firing of an event to send a message to our controller.  So, when the Button's Click event is fired, we will send the enclosed message to the controller.  The message we are sending is an ActionMessage, specifying that the method to call is &amp;quot;Divide.&amp;quot;  It also indicates that the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; elements should be passed as the parameters to this method.  Finally, the return value of the &amp;quot;Divide&amp;quot; method should be bound back to the &amp;quot;DivideResult&amp;quot; element's text property.&lt;br /&gt;&lt;br /&gt;Now that we have a trigger that can send a specific message, who will handle this message?  Notice that the root element UserControl/Window also has an attached property value specified.  By using the Action.Target property we can specify an instance of a class to handle ActionMessages.  For this simple example, we have declared the instance inline, however in most non-trivial applications it's likely that the Action.Target will be set via databinding or by using the &lt;a href="http://caliburn.codeplex.com/wikipage?title=Markup%20Extensions&amp;referringTitle=Action%20Basics"&gt;Resolve Extension&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  The ResolveExtension is only available in WPF becuase Silverlight does not currently support custom markup extensions.  To get around this problem in Silverlight, you can specify a string value for Action.Target.  In this case the string will be used to look up an instance from the IContainer.  If you are using SimpleContainer (Caliburn's default) all services registered by type can also be accessed this way, using the type's FullName as key.&lt;br /&gt;&lt;br /&gt;Now that we have all of our code and markup in place and we understand the basic usage, run the application.  Fill in the text boxes with various numbers and click the button.  You should see the results of a successful divide operation appear in the UI.  Try placing a break point in the &amp;quot;Divide&amp;quot; method and repeat the process.  Next, try entering zero for the &amp;quot;right&amp;quot; value.  Click the button and an exception is thrown.  Youch!  That's not good.  Let's fix that.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Change the Calculator class to match the following definition (you will need to add a using/import statement for Caliburn.PresentationFramework.Filters):&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now, run the code, type in zero for the &amp;quot;right&amp;quot; value and click the button.  This time a message box is displayed and your application is prevented from crashing.  A rescue is a special type of &lt;a href="http://caliburn.codeplex.com/wikipage?title=Filters&amp;referringTitle=Action%20Basics"&gt;filter&lt;/a&gt; that can catch exceptions.  The only parameter it requires is the name of the method to pass the exception to.  If a Rescue is placed on the class (as it is here), any action invoked by Caliburn on that class is protected from unhandled exceptions by that method.  Additionally, rescues can be placed on specific methods.  In this case, the class rescue will be overridden by the method level rescue.  This fixes our application crash, but it doesn't provide us with our desired user experience.  Ideally, we would like the button to be disabled if the text boxes have invalid values.  Let's see how another type of filter can help us out.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Once again update the Calculator class to match the following definition:&lt;/li&gt;&lt;/ul&gt;
&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
[Rescue(&lt;span style="color:#A31515;"&gt;&amp;quot;GeneralRescue&amp;quot;&lt;/span&gt;)]
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; Calculator
{
    [Preview(&lt;span style="color:#A31515;"&gt;&amp;quot;CanDivide&amp;quot;&lt;/span&gt;, AffectsTriggers = &lt;span style="color:Blue;"&gt;true&lt;/span&gt;)]
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;int&lt;/span&gt; Divide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; left / right;
    }
 
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;bool&lt;/span&gt; CanDivide(&lt;span style="color:Blue;"&gt;int&lt;/span&gt; left, &lt;span style="color:Blue;"&gt;int&lt;/span&gt; right)
    {
        &lt;span style="color:Blue;"&gt;return&lt;/span&gt; right != 0;
    }
  
    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; GeneralRescue(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now we've added the Preview filter.  This method occurs before the execution of the decorated Action.  If it returns false the action will not be allowed to execute.  Notice that it takes the same parameters as the action it decorates.  Also, if the AffectsTriggers property is set to true, the preview filter will affect the state of the UI.  This is the default value, so you really don't need to specify it unless you want to turn this behavior off.  Run the application now and type various values in the text boxes.  Notice that the button is now automatically disabled if you provide invalid values.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; By convention, if you name a method Can{ActionName}, Caliburn will automatically add the Preview filter to the action without you needing to add the attribute.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You can also use a Can{ActionName} as a property.  It too will be wired automatically.  (So, you only have to use PreviewAttribute for nonconventional names.)  When you do this, you can also raise property change notifications to force the associated triggers to reevaluate.&lt;br /&gt;&lt;br /&gt;Now that you understand several of the main concepts, we're going to investigate some alternative markup syntaxes that should acutally make using the framework quite convenient.  For the following examples, we'll use all the same Xaml as before, with the exception of the &amp;lt;Button /&amp;gt; element.  We'll change this up each time so that you can learn a few different ways of declaring triggers and actions.  All the remaining markup is identical for both WPF and Silverlight.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Trigger Collection w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt; &lt;span style="color:Red;"&gt;EventName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Click&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ca&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ActionMessage&lt;/span&gt; &lt;span style="color:Red;"&gt;MethodName&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger.Message&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;EventMessageTrigger&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;ct&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;RoutedMessageTriggerCollection&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;cm&lt;/span&gt;&lt;span style="color:Blue;"&gt;:&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Message.Triggers&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt;&lt;span style="color:Blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This markup is very similar to our initial trigger/message declaration.  The only difference is that we have left off the paramaters.  If we leave out the parameters, Caliburn will try to automatically determine the values by looking up UI elements based on the parameter names (it will also search resources).  If the action has a return value, the name of the method + &amp;quot;Result&amp;quot; will be looked up in the UI for binding.  Run the application and you'll notice that everything still works, almost.  Notice that if you put a zero into the &amp;quot;right&amp;quot; box the button is still enabled, but the action never fires (you can confirm this by putting a break point in the divide method.)  This is because Caliburn does not know what UI elements are involved in the message until it is sent, and thus cannot update the UI ahead of time, but it can still filter the action.  Use inferred parameters only when you don't need the UI to update according to changes in input values.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Now, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text, right.Text) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;This is the preferred way of declaring triggers/messages.&lt;/b&gt;  Notice that we are using a different attached property: Message.Attach.  Using this property, we can provide a string that will be parsed out into a trigger.  The declaration you see here is identical at runtime to our original example.  Try running the application to confirm its behavior.  On the left side of the equals sign, we indicate the trigger type and parameters.  Here we are are declaring an EventMessageTrigger for the Click event.  You can get more details on the shortened trigger syntax &lt;a href="http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&amp;referringTitle=Action%20Basics"&gt;here&lt;/a&gt;.  On the right side of the equals sign, we are declaring the type of message and it's contents.  In this case, we have an ActionMessage with its parameter values coming from the text properties of the &amp;quot;left&amp;quot; and &amp;quot;right&amp;quot; text boxes and its return value being bound back to the text property of the &amp;quot;DivideResult&amp;quot; element.  The brackets &amp;quot;[]&amp;quot; are optional in this syntax, but I prefer them because they add some visual clarity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for WPF:&lt;/b&gt;  You can also specify binding modes for the parameters if something other than the default is required.  See below:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Explicit Parameters and Modes)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Next, replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Inferred Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is functionally equivalent to our second long markup example. In this case, our parameters will be inferred by Caliburn.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Default Trigger/Message and Explicit Parameters)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide(left.Text, right.Text) : DivideResult.Text&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is an interesting case.  Here, Caliburn will choose a default trigger based on the type of element being attached to.  Caliburn is also parsing with its default message parser.  In this case the default trigger is an EventMessageTrigger for the Click event and the default message type is ActionMessage, so this markup produces the same runtime behavior as our first example.  Even though this is extremely succinct, I still prefer to declare the trigger and message type explicitly, but you have this option available if you desire.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Replace the &amp;lt;Button /&amp;gt; element with the following markup:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide (Attachment w/ Defaults)&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;With this markup, everything will be inferred by Caliburn: trigger type, message type, parameters and return value.  It works, but please use with caution.&lt;br /&gt;&lt;br /&gt;After all of that, you may be wondering why anyone would use the long syntax.  In 99% of cases you shouldn't need it, but it is there for maximum flexibility.  One final thing to note.  If you wish to attach multiple messages to the same element, you can do this by separating them with a semicolon.  Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;Button&lt;/span&gt; &lt;span style="color:Red;"&gt;Content&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;Divide or Multiply&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;
        &lt;span style="color:Red;"&gt;cm:Message.Attach&lt;/span&gt;&lt;span style="color:Blue;"&gt;=&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:Blue;"&gt;[Event Click] = [Action Divide(left.Text:TwoWay, right.Text:OneTime) : DivideResult.Text]; [Event MouseRightButtonUp] = [Action Multiply(left.Text:TwoWay, right.Text:OneTime) : MultiplyResult.Text]&lt;/span&gt;&lt;span style="color:Black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:Blue;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Mon, 02 Nov 2009 16:06:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Action Basics 20091102040649P</guid></item><item><title>Updated Wiki: IResult</title><link>http://caliburn.codeplex.com/wikipage?title=IResult&amp;version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;IResult and IEnumerable&amp;lt;IResult&amp;gt; (Coroutines)&lt;/h1&gt;
IResult is one of the most powerful features of Actions.  Any action can return an instance of IResult or IEnumerable&amp;lt;IResult&amp;gt;.  Doing so allows you to hand custom code to the runtime which will be executed upon completion of the action.  In fact, the entire OutputPath binding is implemented as a single IResult which the framework executes by default.  You can find this implementation in the framework class named DefaultResult.&lt;br /&gt;&lt;br /&gt;IResult enables handling many difficult programming scenarios with ease, mainly asynchronous programming.  Here's an example of what you can do:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; IEnumerable&amp;lt;IResult&amp;gt; Login(&lt;span style="color:Blue;"&gt;string&lt;/span&gt; username, &lt;span style="color:Blue;"&gt;string&lt;/span&gt; password)
{
    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; authenticator = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; AuthenticateResult(username, password);
    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; authenticator;

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(!authenticator.Succeeded)
    {
        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(&lt;span style="color:#A31515;"&gt;&amp;quot;The username or password provided is incorrect.&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;Access Denied&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; result = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Result();
    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; request = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; GetUserSettings(username);

    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; &lt;span style="color:Blue;"&gt;new&lt;/span&gt; ProcessQuery(request, result, &lt;span style="color:#A31515;"&gt;&amp;quot;Logging In...&amp;quot;&lt;/span&gt;);

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (result.HasErrors)
    {
        &lt;span style="color:Blue;"&gt;var&lt;/span&gt; error = result.Errors.First();

        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(error.Message, &lt;span style="color:#A31515;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; response = result.GetResponse(request);

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(response.Permissions == &lt;span style="color:Blue;"&gt;null&lt;/span&gt; || response.Permissions.Count &amp;lt; 1)
    {
        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(&lt;span style="color:#A31515;"&gt;&amp;quot;You do not have permission to access the dashboard.&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;Access Denied&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    _context.Permissions = response.Permissions;

    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.Child&amp;lt;IDashboard&amp;gt;().In&amp;lt;IShell&amp;gt;();
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; &amp;quot;Show&amp;quot; is a static factory for instances of IResult.  It is not included as part of the Caliburn framework, but is a common pattern I use to simplify these scenarios.&lt;br /&gt;&lt;br /&gt;Each yield statement returns some instance of IResult which Caliburn executes. These results can execute synchronously or asynchronously.  For example, the AuthenticateResult calls a web service asynchronously.  This causes execution of the action to 'pause' until the asynchronous action completes.  When the web service has returned its result, execition then begins on the line immediately following the yield.  In fact, every yield in this action executes asynchronous code.  Using this programming paradigm we can have very intricate asynchronous workflows that are easy to read and understand because they are written sequentially.  This technique is know as &lt;a href="http://en.wikipedia.org/wiki/Coroutine" class="externalLink"&gt;Coroutines&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To create your own IResult simply implement the interface on your own class.  This involves implementing the Execute method and being sure to raise the Completed event when your work is done.  Here is an example of how the ProcessQuery result was written:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; ProcessQuery : IResult
{
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; Query _query;
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; Result _result;
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:Blue;"&gt;string&lt;/span&gt; _waitMessage;

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ProcessQuery(Query query, Result result, &lt;span style="color:Blue;"&gt;string&lt;/span&gt; waitMessage)
    {
        _query = query;
        _result = result;
        _waitMessage = waitMessage;
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ProcessQuery(Query query, Result result)
    {
        _query = query;
        _result = result;
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;string&lt;/span&gt; WaitMessage
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _waitMessage; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Query Query
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _query; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Result Result
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _result; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Execute(IRoutedMessageWithOutcome message, IInteractionNode handlingNode)
    {
        &lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = ServiceLocator.Current.GetInstance&amp;lt;IServer&amp;gt;();

        &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(!&lt;span style="color:Blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(_waitMessage))
            ServiceLocator.Current.GetInstance&amp;lt;ILoadScreen&amp;gt;().StartLoading(_waitMessage);

        service.ProcessQueryAsync(_query, result =&amp;gt;{
            _result.Add(result);

            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (!&lt;span style="color:Blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(_waitMessage))
                ServiceLocator.Current.GetInstance&amp;lt;ILoadScreen&amp;gt;().StopLoading();

            Completed(&lt;span style="color:Blue;"&gt;this&lt;/span&gt;, &lt;span style="color:Blue;"&gt;null&lt;/span&gt;);
        });
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;event&lt;/span&gt; Action&amp;lt;IResult, Exception&amp;gt; Completed = &lt;span style="color:Blue;"&gt;delegate&lt;/span&gt; { };
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is just one example of the endless possibilities and was developed for a specific application where this type of interaction was common.  Notice the signature of the Execute method.  Caliburn will provide you with contextual information as well.  The IRoutedMessageWithOutcome is the original message sent from the UI which caused the action to be executed and the IInteractionNode is the node within the UI that caught and handled the message.  You can drill through the properties of these interfaces to discover much about the current scenario.  Again, see the framework's DefaultResult for an example of this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Raising Completed with it's second parameter being an instance of Exception will cause IResult enumeration to immediately stop.  The exception will then be thrown.  However, there is a special exception, CancelResult, which can be sent.  It only causes the cancellation of enumeration and does not get thrown as a normal exception would.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Using IResult also aids in unit testing because the extremely complex interaction testing that would normally take place can be replaced with simple state-based testing by enumerating the results and checking their properties.  (You don't need to call the Execute method during Action testing because you are not testing the IResults themselves, rather what results are returned and how they are configured.  You should have separate unit tests for each type of IResult.)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Mon, 02 Nov 2009 15:59:26 GMT</pubDate><guid isPermaLink="false">Updated Wiki: IResult 20091102035926P</guid></item><item><title>Updated Wiki: IResult</title><link>http://caliburn.codeplex.com/wikipage?title=IResult&amp;version=16</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;IResult and IEnumerable&amp;lt;IResult&amp;gt; (Coroutines)&lt;/h1&gt;
IResult is one of the most powerful features of Actions.  Any action can return an instance of IResult or IEnumerable&amp;lt;IResult&amp;gt;.  Doing so allows you to hand custom code to the runtime which will be executed upon completion of the action.  In fact, the entire OutputPath binding is implemented as a single IResult which the framework executes by default.  You can find this implementation in the framework class named DefaultResult.&lt;br /&gt;&lt;br /&gt;IResult enables handling many difficult programming scenarios with ease, mainly asynchronous programming.  Here's an example of what you can do:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; IEnumerable&amp;lt;IResult&amp;gt; Login(&lt;span style="color:Blue;"&gt;string&lt;/span&gt; username, &lt;span style="color:Blue;"&gt;string&lt;/span&gt; password)
{
    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; authenticator = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; AuthenticateResult(username, password);
    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; authenticator;

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(!authenticator.Succeeded)
    {
        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(&lt;span style="color:#A31515;"&gt;&amp;quot;The username or password provided is incorrect.&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;Access Denied&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; result = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; Result();
    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; request = &lt;span style="color:Blue;"&gt;new&lt;/span&gt; GetUserSettings(username);

    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; &lt;span style="color:Blue;"&gt;new&lt;/span&gt; ProcessQuery(request, result, &lt;span style="color:#A31515;"&gt;&amp;quot;Logging In...&amp;quot;&lt;/span&gt;);

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (result.HasErrors)
    {
        &lt;span style="color:Blue;"&gt;var&lt;/span&gt; error = result.Errors.First();

        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(error.Message, &lt;span style="color:#A31515;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    &lt;span style="color:Blue;"&gt;var&lt;/span&gt; response = result.GetResponse(request);

    &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(response.Permissions == &lt;span style="color:Blue;"&gt;null&lt;/span&gt; || response.Permissions.Count &amp;lt; 1)
    {
        yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.MessageBox(&lt;span style="color:#A31515;"&gt;&amp;quot;You do not have permission to access the dashboard.&amp;quot;&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;&amp;quot;Access Denied&amp;quot;&lt;/span&gt;);
        yield &lt;span style="color:Blue;"&gt;break&lt;/span&gt;;
    }

    _context.Permissions = response.Permissions;

    yield &lt;span style="color:Blue;"&gt;return&lt;/span&gt; Show.Child&amp;lt;IDashboard&amp;gt;().In&amp;lt;IShell&amp;gt;();
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; &amp;quot;Show&amp;quot; is a static factory for instances of IResult.  It is not included as part of the Caliburn framework, but is a common pattern I use to simplify these scenarios.&lt;br /&gt;&lt;br /&gt;Each yield statement returns some instance of IResult which Caliburn executes. These results can execute synchronously or asynchronously.  For example, the AuthenticateResult calls a web service asynchronously.  This causes execution of the action to 'pause' until the asynchronous action completes.  When the web service has returned its result, execition then begins on the line immediately following the yield.  In fact, every yield in this action executes asynchronous code.  Using this programming paradigm we can have very intricate asynchronous workflows that are easy to read and understand because they are written sequentially.  This technique is know as &lt;a href="http://en.wikipedia.org/wiki/Coroutine" class="externalLink"&gt;Coroutines&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To create your own IResult simply implement the interface on your own class.  This involves implementing the Execute method and being sure to raise the Completed event when your work is done.  Here is an example of how the ProcessQuery result was written:&lt;br /&gt;&lt;br /&gt;&lt;div style="color:Black;background-color:White;"&gt;&lt;pre&gt;
&lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;class&lt;/span&gt; ProcessQuery : IResult
{
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; Query _query;
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; Result _result;
    &lt;span style="color:Blue;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:Blue;"&gt;string&lt;/span&gt; _waitMessage;

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ProcessQuery(Query query, Result result, &lt;span style="color:Blue;"&gt;string&lt;/span&gt; waitMessage)
    {
        _query = query;
        _result = result;
        _waitMessage = waitMessage;
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; ProcessQuery(Query query, Result result)
    {
        _query = query;
        _result = result;
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;string&lt;/span&gt; WaitMessage
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _waitMessage; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Query Query
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _query; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; Result Result
    {
        &lt;span style="color:Blue;"&gt;get&lt;/span&gt; { &lt;span style="color:Blue;"&gt;return&lt;/span&gt; _result; }
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;void&lt;/span&gt; Execute(IRoutedMessageWithOutcome message, IInteractionNode handlingNode)
    {
        &lt;span style="color:Blue;"&gt;var&lt;/span&gt; service = ServiceLocator.Current.GetInstance&amp;lt;IServer&amp;gt;();

        &lt;span style="color:Blue;"&gt;if&lt;/span&gt;(!&lt;span style="color:Blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(_waitMessage))
            ServiceLocator.Current.GetInstance&amp;lt;ILoadScreen&amp;gt;().StartLoading(_waitMessage);

        service.ProcessQueryAsync(_query, result =&amp;gt;{
            _result.Add(result);

            &lt;span style="color:Blue;"&gt;if&lt;/span&gt; (!&lt;span style="color:Blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(_waitMessage))
                ServiceLocator.Current.GetInstance&amp;lt;ILoadScreen&amp;gt;().StopLoading();

            Completed(&lt;span style="color:Blue;"&gt;this&lt;/span&gt;, &lt;span style="color:Blue;"&gt;null&lt;/span&gt;);
        });
    }

    &lt;span style="color:Blue;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;"&gt;event&lt;/span&gt; Action&amp;lt;IResult, Exception&amp;gt; Completed = &lt;span style="color:Blue;"&gt;delegate&lt;/span&gt; { };
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This is just one example of the endless possibilities and was developed for a specific application where this type of interaction was common.  Notice the signature of the Execute method.  Caliburn will provide you with contextual information as well.  The IRoutedMessageWithOutcome is the original message sent from the UI which caused the action to be executed and the IInteractionNode is the node within the UI that caught and handled the message.  You can drill through the properties of these interfaces to discover much about the current scenario.  Again, see the framework's DefaultResult for an example of this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Using IResult also aids in unit testing because the extremely complex interaction testing that would normally take place can be replaced with simple state-based testing by enumerating the results and checking their properties.  (You don't need to call the Execute method during Action testing because you are not testing the IResults themselves, rather what results are returned and how they are configured.  You should have separate unit tests for each type of IResult.)&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Mon, 02 Nov 2009 15:53:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: IResult 20091102035331P</guid></item><item><title>New Comment on "Dependent Actions"</title><link>http://caliburn.codeplex.com/wikipage?title=Dependent Actions&amp;ANCHOR#C14097</link><description>I was not implementing INotifyPropertyChanged in my calculator class.   Easy fix.</description><author>RDotlee</author><pubDate>Sat, 31 Oct 2009 01:08:18 GMT</pubDate><guid isPermaLink="false">New Comment on "Dependent Actions" 20091031010818A</guid></item><item><title>New Comment on "Dependent Actions"</title><link>http://caliburn.codeplex.com/wikipage?title=Dependent Actions&amp;ANCHOR#C14082</link><description>Hello Rob&amp;#33;  At one time the RoutedUIMessaging namespace obviously existed.  It does not exist now but your sample code in the documentation usually references it.    Also, i&amp;#39;m not  able to get this sample to work using Silverlight 3.   I have the latest Caliburn source.  The button does not enable.  If ialways return true from the CanDivide method the button enables but the Divide method does not get called.   I am going t o keep working on it but if you have any thoughts that would be great.</description><author>RDotLee</author><pubDate>Fri, 30 Oct 2009 01:21:06 GMT</pubDate><guid isPermaLink="false">New Comment on "Dependent Actions" 20091030012106A</guid></item><item><title>Updated Wiki: BlogsArticlesProjects</title><link>http://caliburn.codeplex.com/wikipage?title=BlogsArticlesProjects&amp;version=9</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Blogs, Articles and Related Projects&lt;/h1&gt;
Below are a list of blogs, articles and projects related to Caliburn in some way.  If you are writing or building anything with Caliburn, we would love to discuss getting you on the site.&lt;br /&gt;
&lt;h2&gt;Prism Stock Trader with Caliburn&lt;/h2&gt;
You may or may not be familiar with the &lt;a href="http://compositewpf.codeplex.com/" class="externalLink"&gt;Prism Stockc Trader&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  It is a reference application created by the p&amp;amp;p team at Microsoft for the purpose of demonstrating solid testable UI architecture.  It addresses several issues related to composite application development.  It is an excellent application to study and learn from.  Marco Amendola is going further by taking the Stock Trader and converting it to take advantage of Caliburn.  You can follow his efforts on &lt;a href="http://marcoamendola.wordpress.com/" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Testing with Caliburn and unhaddins&lt;/h2&gt;
unhaddins is a project led by Fabio Maulo.  It's goal is to provide you with an all-in-one stop shop for NHibernate based projects.  It has some nice extensions for basic NHibernate development and some specific work around using NHibernate on WPF projects.  Jos&amp;#233; F. Romaniello is using unhaddins to build his Chinook Media Manager.  While he is not using Caliburn for the architecture, he is using it for testing.  &lt;a href="http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAddIns.Examples.WPF/ChinookMediaManager.View.Test/TestDataBindings.cs" class="externalLink"&gt;Here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, you can find a very nice bit of code that uses Caliburn to test all his application's view models.  You may also be interested in following the the development of his media manager on &lt;a href="http://nhforge.org/blogs/nhibernate/archive/2009/08/19/nhibernate-and-wpf-viewmodels-and-views.aspx" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Build an Application with Caliburn And Prism&lt;/h2&gt;
Ryan Rauh is responsible for adding the Prism integration for Caliburn.  If you are interested in using Prism and Caliburn together, have a look at his blog series &lt;a href="http://rauhski.blogspot.com/" class="externalLink"&gt;Build an Application with Caliburn And Prism&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Devlicios&lt;/h2&gt;
Please visit &lt;a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx" class="externalLink"&gt;my blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; where you can read more about Caliburn.  I will be running some how to's and talking more extensively about UI architecture.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Wed, 28 Oct 2009 03:28:34 GMT</pubDate><guid isPermaLink="false">Updated Wiki: BlogsArticlesProjects 20091028032834A</guid></item><item><title>New Comment on "BlogsArticlesProjects"</title><link>http://caliburn.codeplex.com/wikipage?title=BlogsArticlesProjects&amp;ANCHOR#C14059</link><description>Thank you very much for the mention&amp;#10;I&amp;#39;m not the PL of unhaddins, Fabio Maulo is the PL and creator of the project.</description><author>jfromaniello</author><pubDate>Tue, 27 Oct 2009 23:22:09 GMT</pubDate><guid isPermaLink="false">New Comment on "BlogsArticlesProjects" 20091027112209P</guid></item><item><title>Updated Wiki: Products</title><link>http://caliburn.codeplex.com/wikipage?title=Products&amp;version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Products&lt;/h1&gt;
Caliburn has been used in the development of products for state and local governments, startups and even multi-billion dollar corporations.  Many of these projects cannot be publicly discussed, but we have a small sample of the ones that can below.  If you are currently working on an application that uses Caliburn, please contact us.  We would love to discuss adding it to the gallery.&lt;br /&gt;
&lt;h2&gt;NHibernate Profiler&lt;/h2&gt;
NHibernate Profiler is a real-time visual debugger allowing a development team to gain valuable insight and perspective into their practice of using NHibernate or Hibernate. The product is architected with input coming from many top industry leaders within the NHibernate community. Alerts are presented in a concise code-review manner indicating patterns of misuse by your application. To streamline your efforts to correct the misuse, we provide links to the problematic code section that triggered the alert.  This product primarily takes advantage of Caliburn's Actions and Commands.  Development was started towards the end of 2008 and was influential on Caliburn's implementation of IViewStrategy, the IPresenter model and the IDispatcher.  More information about the product can be found &lt;a href="http://www.nhprof.com/" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=caliburn&amp;DownloadId=89172" alt="Current&amp;#32;Activity" title="Current&amp;#32;Activity" /&gt;&lt;br /&gt;
&lt;h2&gt;Clean Water Services&lt;/h2&gt;
The &lt;a href="http://www.cleanwaterservices.org" class="externalLink"&gt;local stormwater/wastewater utility near Portland, OR&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; needed an application to report on the status of equipment in the treatment plants. This app was developed for Toughbook CF-U1 handhelds with a 7” screen – so everything is huge (and simple) on purpose.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=caliburn&amp;DownloadId=89174" alt="Stormwater&amp;#32;Pin" title="Stormwater&amp;#32;Pin" /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=caliburn&amp;DownloadId=89175" alt="Stormwater&amp;#32;Checklist" title="Stormwater&amp;#32;Checklist" /&gt;&lt;br /&gt;
&lt;h2&gt;MapDotNet UX Studio&lt;/h2&gt;
MapDotNet UX Studio is a Windows™ desktop application that provides a rich and user friendly interface for designing interactive maps. Users can visualize and design all types of interactive maps using Studio, including thematic maps, overlay maps, and data-driven dynamic maps. These interactive maps can then be shared with others, integrated into desktop applications, or exported to a MapDotNet UX Web Services server where they can be served up for use in enterprise applications.  The development of this product was being done while Caliburn's alpha was being prepared.  As such, it doesn't use Caliburn.Core.dll or Caliburn.PresentationFramework.dll but borrowed directly from the Caliburn source code base as well as inspired several of its features, such as the IPresenter model.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=caliburn&amp;DownloadId=89176" alt="MapDotNet&amp;#32;UX&amp;#32;Studio" title="MapDotNet&amp;#32;UX&amp;#32;Studio" /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Tue, 27 Oct 2009 16:07:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Products 20091027040738P</guid></item><item><title>Updated Wiki: Home</title><link>http://caliburn.codeplex.com/wikipage?version=15</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Project Description&lt;/h1&gt;Designed to aid in the development of WPF and Silverlight applications, Caliburn implements a variety of UI patterns for solving real-world problems.  Patterns that are enabled by the framework include MVC, MVP, Presentation Model &amp;#40;MVVM&amp;#41;, Commands and Application Controller.&lt;br /&gt;
&lt;h2&gt;Goals&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Support building WPF/SL application that are TDD friendly.&lt;/li&gt;
&lt;li&gt;Implement functionality for simplifying various UI design patterns in WPF/SL. These patterns include MVC, MVP, Presentation Model (MVVM), Commands, etc.&lt;/li&gt;
&lt;li&gt;Ease the use of a dependency injection container with WPF/SL.&lt;/li&gt;
&lt;li&gt;Simplify or provide alternatives to common WPF/SL related tasks.&lt;/li&gt;
&lt;li&gt;Provide solutions to common UI architecture problems.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Get the &lt;a href="http://caliburn.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34985" class="externalLink"&gt;Caliburn V1 RTW&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and have a look at the &lt;a href="http://caliburn.codeplex.com/documentation" class="externalLink"&gt;improved documentation&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/h2&gt;
&lt;div class="rss"&gt;&lt;div class="accentbar"&gt;&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;.NET &amp;amp; Funky Fresh News Feed&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://devlicio.us/blogs/rob_eisenberg/archive/2009/09/10/caliburn-rc3.aspx"&gt;Caliburn RC3&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Thursday, September 10, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds.feedburner.com/FunkyFresh"&gt;.NET &amp;amp; Funky Fresh&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Today I&amp;rsquo;ve made the &lt;a href="http://caliburn.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32809"&gt;RC3 of Caliburn v1&lt;/a&gt; available.&amp;nbsp; I&amp;rsquo;m going to let it sit for a couple of weeks, then I will RTW.&amp;nbsp; Please take time to update your code to this new version and post any bugs to &lt;a href="http://caliburn.codeplex.com/"&gt;the codeplex site&lt;/a&gt;.&amp;nbsp; Any bugs not found in the next couple of weeks will have to be fixed in v2.&amp;nbsp; Below is a list of changes/fixes between RC2 and RC3.&amp;nbsp; You can also take a look at the recently extended &lt;a href="http://caliburn.codeplex.com/Wiki/View.aspx?title=Table%20Of%20Contents"&gt;documentation online.&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Updated the StructureMap.dll to version 2.5.3. &lt;/li&gt;
&lt;li&gt;Made a slight alteration to CoreConfiguration that makes it more friendly when run in a unit test. &lt;/li&gt;
&lt;li&gt;Added an AutofacAdapter for .NET 3.5, Silverlight 2.0 and Silverlight 3.0. &lt;/li&gt;
&lt;li&gt;Fixed bugs in the DefaultWindowManager. &lt;/li&gt;
&lt;li&gt;Added IPresenterNode which allows presenters to be hooked up with a reference to their parent. All implementors of IPresenterHost now wire themselves when opening children and unwire themselves during a shutdown. &lt;/li&gt;
&lt;li&gt;Created the IBinder interface. This replaces the functionality that was in the extension method AttachTo. This interface is meant to provide a pluggable way to change the behavior of Model/View wire-up. &lt;/li&gt;
&lt;li&gt;Updated DefaultBinder to allow for convention-based action wire-up. &lt;/li&gt;
&lt;li&gt;Fixed a bug in auto-registration with CommandAttribute. &lt;/li&gt;
&lt;li&gt;Fixed several bugs with CaliburnApplication &lt;/li&gt;
&lt;li&gt;Fixed a bug where certain module scenarios would cause the PresentationFrameworkModule to be configured twice. &lt;/li&gt;
&lt;li&gt;Fixed some inconsistencies in the DefaultWindowManager and CaliburnApplication.silverlight.cs. &lt;/li&gt;
&lt;li&gt;Removed a pesky attribute in the WPF ContactManager&amp;#39;s .config file that was causing bugs for some people. &lt;/li&gt;
&lt;li&gt;Removed Message.Attach2nd, Message.Attach3rd and Message.Attach4th. You can now attach an arbitrary number of messages with Message.Attach by separating each message with a semicolon. This caused a breaking change to the IParser implementation, but it is unlikely that will affect many people. &lt;/li&gt;
&lt;li&gt;Fixed some bugs in Parameter.silverlight.cs related to event defaults for elements that are bound. &lt;/li&gt;
&lt;li&gt;Improved the BackgroundProcessing sample. &lt;/li&gt;
&lt;li&gt;Fixed some bugs in parsing of parameters for messages. There were certain scenarios where the parser could not differentiate between string literals and references to control.&amp;nbsp; To pass literals as a message parameter (short syntax only), you must surround it with single quotes. &lt;/li&gt;
&lt;li&gt;Added AttachedEventTriggerParser. We can all now use attached event triggers in the short syntax. Usage is as follows: cal:Message.Attach=&amp;quot;[AttachedEvent ButtonBase.Click] = [Action MyAction]&amp;quot; The caveat is that we cannot map namespaces from xaml into the parser. To work around this problem, we search through all AppDomain assemblies by default. If you would like to optimize this, simply inherit from AttachedEventTriggerParser and override GetSearchableAssemblies. Then register your ITriggerParser with IParser under the name &amp;quot;AttachedEvent&amp;quot; &lt;/li&gt;
&lt;li&gt;Enabled the DefaultViewStrategy to handle custom contexts without the need of a ViewStrategyAttribute. If a context is the DefaultViewStrategy will treat the view name as a folder name by adding an &amp;quot;s&amp;quot; and search that folder for views with the context as their name. &lt;/li&gt;
&lt;li&gt;Fixed various bugs in DefaultViewStrategy. &lt;/li&gt;
&lt;li&gt;Fixed various bugs in AsynchronousAction and in the BackgroundProcessing sample. &lt;/li&gt;
&lt;li&gt;Updated MEF to Preview 7. &lt;/li&gt;
&lt;li&gt;Changed IMessageBinder.BindOutcome to IMessageBinder.CreateResult. &lt;/li&gt;
&lt;li&gt;Enabled the DefaultBinder to look for properties named with the pattern Can + Action and wire up the IsEnabled property automatically. &lt;/li&gt;
&lt;li&gt;Fixed the signatures of extension methods for IWindowManager. &lt;/li&gt;
&lt;li&gt;Fixed a bug in binding validation that occurs when properties are overridden on a bound type. &lt;/li&gt;
&lt;li&gt;Provided a way for a presenter to pass a dialog result to the view on close. &lt;/li&gt;
&lt;li&gt;Made some improvements to exception messages in the case of parameter count mismatch during invocation. &lt;/li&gt;
&lt;li&gt;Updated Caliburn&amp;#39;s build to work with Silverlight 3.0.40818.0 service release. &lt;/li&gt;
&lt;li&gt;Extended the IDispatcher to allow async UI invocation. &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51196" width="1" height="1"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://devlicio.us/blogs/rob_eisenberg/archive/2009/09/08/dispelling-a-common-wpf-silverlight-myth.aspx"&gt;Dispelling a Common WPF/SL Myth&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Tuesday, September 08, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds.feedburner.com/FunkyFresh"&gt;.NET &amp;amp; Funky Fresh&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Everywhere I look I find WPF/Silverlight developers who believe a very popular myth:&amp;nbsp; You cannot update a ViewModel or an ObservableCollection from a non-UI thread.&amp;nbsp; Like most myths, there is an element of truth here.&amp;nbsp; But not understanding that truth can lead you to some very elaborate solutions.&amp;nbsp; Here&amp;rsquo;s the truth: You cannot fire the change notification from a non-UI thread.&amp;nbsp; So with that in mind, it becomes very easy to abstract thread synchronization away.&amp;nbsp; Here&amp;rsquo;s how we do it in Caliburn:&lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="c#"&gt;public abstract class PropertyChangedBase : INotifyPropertyChanged&lt;br /&gt;{&lt;br /&gt;    public event PropertyChangedEventHandler PropertyChanged = delegate { };&lt;br /&gt;&lt;br /&gt;    public virtual void NotifyOfPropertyChange(string propertyName)&lt;br /&gt;    {&lt;br /&gt;        Execute.OnUIThread(() =&amp;gt; RaisePropertyChangedEventImmediately(propertyName));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public virtual void RaisePropertyChangedEventImmediately(string propertyName)&lt;br /&gt;    {&lt;br /&gt;        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class BindableCollection&amp;lt;T&amp;gt; : ObservableCollection&amp;lt;T&amp;gt;, IObservableCollection&amp;lt;T&amp;gt;&lt;br /&gt;{&lt;br /&gt;    public BindableCollection() {}&lt;br /&gt;&lt;br /&gt;    protected override void OnPropertyChanged(PropertyChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        Execute.OnUIThread(() =&amp;gt; RaisePropertyChangedEventImmediately(e));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        Execute.OnUIThread(() =&amp;gt; RaiseCollectionChangedEventImmediately(e));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void RaiseCollectionChangedEventImmediately(NotifyCollectionChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        base.OnCollectionChanged(e);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void RaisePropertyChangedEventImmediately(PropertyChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        base.OnPropertyChanged(e);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The Execute.OnUIThread is a helper that Caliburn provides to abstract away the underlying IDispatcher.&amp;nbsp; When Caliburn&amp;rsquo;s dispatcher is asked to execute something on the UI thread it first checks the thread it is on.&amp;nbsp; If it is already on the UI thread, it simply invokes the delegate normally.&amp;nbsp; Otherwise it marshals the call to the UI thread.&amp;nbsp; This approach also makes testing easy, because you will never find any threading code in a ViewModel.&amp;nbsp; Everything ultimately goes through an IDispatcher which Caliburn provides a fake implementation of for testing purposes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51164" width="1" height="1"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://devlicio.us/blogs/rob_eisenberg/archive/2009/09/04/tallahassee-code-camp-is-upon-us.aspx"&gt;Tallahassee Code Camp is Upon Us!&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Friday, September 04, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds.feedburner.com/FunkyFresh"&gt;.NET &amp;amp; Funky Fresh&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Tomorrow at the FSU College of Communication and Information we will hold Tallahassee&amp;rsquo;s 5th Annual Code Camp!&amp;nbsp; We have a great &lt;a href="http://www.tallycodecamp.org/2009/Speaker/List"&gt;list of speakers&lt;/a&gt; and some &lt;a href="http://www.tallycodecamp.org/2009/Session/List"&gt;awesome sessions&lt;/a&gt; planned.&amp;nbsp; Please check out &lt;a href="http://www.tallycodecamp.org/2009"&gt;our official site.&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51140" width="1" height="1"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="accentbar"&gt;&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;.NET &amp;amp; Funky Fresh News Feed&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Mon, 26 Oct 2009 16:59:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20091026045955P</guid></item><item><title>Updated Wiki: BlogsArticlesProjects</title><link>http://caliburn.codeplex.com/wikipage?title=BlogsArticlesProjects&amp;version=8</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Blogs, Articles and Related Projects&lt;/h1&gt;
Below are a list of blogs, articles and projects related to Caliburn in some way.  If you are writing or building anything with Caliburn, we would love to discuss getting you on the site.&lt;br /&gt;
&lt;h2&gt;Prism Stock Trader with Caliburn&lt;/h2&gt;
You may or may not be familiar with the &lt;a href="http://compositewpf.codeplex.com/" class="externalLink"&gt;Prism Stockc Trader&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  It is a reference application created by the p&amp;amp;p team at Microsoft for the purpose of demonstrating solid testable UI architecture.  It addresses several issues related to composite application development.  It is an excellent application to study and learn from.  Marco Amendola is going further by taking the Stock Trader and converting it to take advantage of Caliburn.  You can follow his efforts on &lt;a href="http://marcoamendola.wordpress.com/" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Testing with Caliburn and unhaddins&lt;/h2&gt;
unhaddins is a project led by Jos&amp;#233; F. Romaniello.  It's goal is to provide you with an all-in-one stop shop for NHibernate based projects.  He has some nice extensions for basic NHibernate development and some specific work around using NHibernate on WPF projects.  Jos&amp;#233; is using unhaddins to build his Chinook Media Manager.  While he is not using Caliburn for the architecture, he is using it for testing.  &lt;a href="http://code.google.com/p/unhaddins/source/browse/trunk/Examples/uNHAddIns.Examples.WPF/ChinookMediaManager.View.Test/TestDataBindings.cs" class="externalLink"&gt;Here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, you can find a very nice bit of code that uses Caliburn to test all his applications view models.  You may also be interested in following the the development of his media manager on &lt;a href="http://nhforge.org/blogs/nhibernate/archive/2009/08/19/nhibernate-and-wpf-viewmodels-and-views.aspx" class="externalLink"&gt;his blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Build an Application with Caliburn And Prism&lt;/h2&gt;
Ryan Rauh is responsible for adding the Prism integration for Caliburn.  If you are interested in using Prism and Caliburn together, have a look at his blog series &lt;a href="http://rauhski.blogspot.com/" class="externalLink"&gt;Build an Application with Caliburn And Prism&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Devlicios&lt;/h2&gt;
Please visit &lt;a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx" class="externalLink"&gt;my blog&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; where you can read more about Caliburn.  I will be running some how to's and talking more extensively about UI architecture.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>EisenbergEffect</author><pubDate>Mon, 26 Oct 2009 01:21:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: BlogsArticlesProjects 20091026012117A</guid></item></channel></rss>