<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Francisco Moreno's Blog</title>
        <link>http://blogs.imeta.co.uk/FMoreno/Default.aspx</link>
        <description>Alive with Technology</description>
        <language>en-GB</language>
        <copyright>Francisco Moreno</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <image>
            <title>Francisco Moreno's Blog</title>
            <url>http://blogs.imeta.co.uk/images/RSS2Image.gif</url>
            <link>http://blogs.imeta.co.uk/FMoreno/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>[WPF] The Power of Converters</title>
            <link>http://blogs.imeta.co.uk/FMoreno/archive/2008/11/07/498.aspx</link>
            <description>&lt;p&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="323" alt="Converters Sample" width="324" border="0" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFThePowerofConverters_11A3B/Capture_1.png" /&gt; &lt;/p&gt;
&lt;p&gt;WPF converters provide a way to apply custom logic to a binding. In this article, we will make use of WPF converters to demonstrate its usefulness. Our sample application is a firewall controller which lets us switch on and off the firewall by clicking a button, changing the ellipse colour accordingly.&lt;/p&gt;
&lt;p&gt;Let's start by creating a new WPF Application project. Then we will create a simple Firewall class. The code is pretty straightforward:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public class &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Firewall &lt;/span&gt;: &lt;span style="COLOR: #2b91af"&gt;INotifyPropertyChanged
&lt;/span&gt;{
    &lt;span style="COLOR: gray"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="COLOR: green"&gt;Posible states of the firewall.
    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public enum &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;States
    &lt;/span&gt;{
        On,
        Off
    }

    &lt;span style="COLOR: gray"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="COLOR: green"&gt;Default constructor sets firewall state to off.
    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;Firewall()
    {
        State = &lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;.Off;
    }

    &lt;span style="COLOR: gray"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="COLOR: green"&gt;Required event for the INotifyPropertyChanged interface.
    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public event &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;PropertyChangedEventHandler &lt;/span&gt;PropertyChanged;

    &lt;span style="COLOR: gray"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="COLOR: green"&gt;The current state of the firewall.
    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;States &lt;/span&gt;_state;

    &lt;span style="COLOR: gray"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="COLOR: green"&gt;Gets or sets the state of the firewall.
    &lt;/span&gt;&lt;span style="COLOR: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;States &lt;/span&gt;State
    {
        &lt;span style="COLOR: blue"&gt;get &lt;/span&gt;{ &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;_state; }
        &lt;span style="COLOR: blue"&gt;set
        &lt;/span&gt;{
            &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(&lt;span style="COLOR: blue"&gt;value &lt;/span&gt;!= _state)
            {
                _state = &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;;

                &lt;span style="COLOR: green"&gt;// Notifiy that the firewall state has changed.
                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(PropertyChanged != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
                {
                    PropertyChanged(&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;PropertyChangedEventArgs&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"State"&lt;/span&gt;));
                }
            }
        }
    }
}&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Notice that we implement the &lt;font color="#000080"&gt;INotifyPropertyChange&lt;/font&gt; interface. This interface is used by the WPF data binding engine to know when a property has changed so it can be updated.&lt;/p&gt;
&lt;p&gt;Now we are going to design our sample application via XAML. Again, the code is pretty simple. We will add it inside the default Grid that Visual Studio adds for us when creating a new WPF Application project:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Window.Resources&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;my&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StateToColorConverter &lt;/span&gt;&lt;span style="COLOR: red"&gt;x&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Key&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="stateToColorConverter" /&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Window.Resources&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;

&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;RowDefinition  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;RowDefinition  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;RowDefinition  &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="0" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="0" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Orientation&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Horizontal" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Center"&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Ellipse 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="60" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="60" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Fill&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="{&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="COLOR: red"&gt;State&lt;/span&gt;&lt;span style="COLOR: blue"&gt;, &lt;/span&gt;&lt;span style="COLOR: red"&gt;Converter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;={&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="COLOR: red"&gt;stateToColorConverter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;}, &lt;/span&gt;&lt;span style="COLOR: red"&gt;ConverterParameter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=Green}" /&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="0" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="1" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;Orientation&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Horizontal" 
        &lt;/span&gt;&lt;span style="COLOR: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Center"&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Ellipse 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="60" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="60" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Fill&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="{&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="COLOR: red"&gt;State&lt;/span&gt;&lt;span style="COLOR: blue"&gt;, &lt;/span&gt;&lt;span style="COLOR: red"&gt;Converter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;={&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="COLOR: red"&gt;stateToColorConverter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;}, &lt;/span&gt;&lt;span style="COLOR: red"&gt;ConverterParameter&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=Red}" /&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="1" &lt;/span&gt;&lt;span style="COLOR: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="2" &lt;/span&gt;&lt;span style="COLOR: red"&gt;Orientation&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Horizontal" &lt;/span&gt;&lt;span style="COLOR: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Center"&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Button
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;x&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="btnOn"
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="100" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="25" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Margin&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="5,5,5,5" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Content&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="On" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Click&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="OnClicked"/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;Button 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;x&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="btnOff"
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="100" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="25" 
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Margin&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="5,5,5,5"
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Content&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Off"
            &lt;/span&gt;&lt;span style="COLOR: red"&gt;Click&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="OffClicked" /&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;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;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Let's explain a couple of things about this code: As you can see, we have added a &lt;font color="#000080"&gt;StateToColorConverter&lt;/font&gt; declaration. This is our custom converter that we will create in a moment. For this declaration to work, we need to add our custom &lt;font color="#000080"&gt;my&lt;/font&gt; namespace, so our application knows where to find that resource:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: red"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;my&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="clr-namespace:ConvertersSample"&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The next interesting thing about our XAML code is the &lt;font color="#000080"&gt;Ellipse Fill&lt;/font&gt; property. We make use of binding, telling that it is the &lt;font color="#000080"&gt;State&lt;/font&gt; property of our firewall class the property we want to bind. Since the &lt;font color="#000080"&gt;State&lt;/font&gt; property is just a simple &lt;font color="#000080"&gt;Enum&lt;/font&gt; and not a &lt;font color="#000080"&gt;SolidColorBrush&lt;/font&gt;, our application simply won't work. Here's where converters play their role. As you can see in the code, we have added a StateToColorConverter converter passing a parameter, depending on the firewall state and the colour we want to associate to it.&lt;/p&gt;
&lt;p&gt;Let's now write our converter:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public class &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;StateToColorConverter &lt;/span&gt;: &lt;span style="COLOR: #2b91af"&gt;IValueConverter
&lt;/span&gt;{
    &lt;span style="COLOR: blue"&gt;public enum &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;StateColor
    &lt;/span&gt;{
        Green,
        Red
    }

    &lt;span style="COLOR: blue"&gt;public object &lt;/span&gt;Convert(&lt;span style="COLOR: blue"&gt;object &lt;/span&gt;value, &lt;span style="COLOR: #2b91af"&gt;Type &lt;/span&gt;targetType, &lt;span style="COLOR: blue"&gt;object &lt;/span&gt;parameter, System.Globalization.&lt;span style="COLOR: #2b91af"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States &lt;/span&gt;state = (&lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;)value;
        &lt;span style="COLOR: #2b91af"&gt;StateColor &lt;/span&gt;stateColor = (&lt;span style="COLOR: #2b91af"&gt;StateColor&lt;/span&gt;)&lt;span style="COLOR: #2b91af"&gt;Enum&lt;/span&gt;.Parse(&lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;StateColor&lt;/span&gt;), (&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;)parameter);

        &lt;span style="COLOR: blue"&gt;switch &lt;/span&gt;(state)
        {
            &lt;span style="COLOR: blue"&gt;case &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;.On:
                &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(stateColor == &lt;span style="COLOR: #2b91af"&gt;StateColor&lt;/span&gt;.Green)
                {
                    &lt;span style="COLOR: blue"&gt;return new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Colors&lt;/span&gt;.Green);   
                }
                &lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;
            &lt;span style="COLOR: blue"&gt;case &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;.Off:
                &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(stateColor == &lt;span style="COLOR: #2b91af"&gt;StateColor&lt;/span&gt;.Red)
                {
                    &lt;span style="COLOR: blue"&gt;return new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Colors&lt;/span&gt;.Red);   
                }
                &lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;
        }

        &lt;span style="COLOR: blue"&gt;return new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Colors&lt;/span&gt;.Gray);
    }

    &lt;span style="COLOR: blue"&gt;public object &lt;/span&gt;ConvertBack(&lt;span style="COLOR: blue"&gt;object &lt;/span&gt;value, &lt;span style="COLOR: #2b91af"&gt;Type &lt;/span&gt;targetType, &lt;span style="COLOR: blue"&gt;object &lt;/span&gt;parameter, System.Globalization.&lt;span style="COLOR: #2b91af"&gt;CultureInfo &lt;/span&gt;culture)
    {
        &lt;span style="COLOR: blue"&gt;return null&lt;/span&gt;;
    }
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First of all, we have added a &lt;font color="#000080"&gt;StateColor&lt;/font&gt; &lt;font color="#000080"&gt;Enum&lt;/font&gt; with the values of green and red. This will be use to convert our parameter (see &lt;font color="#000080"&gt;Ellipse&lt;/font&gt; &lt;font color="#000080"&gt;Fill&lt;/font&gt; property in previous code snippet) to a &lt;font color="#000080"&gt;SolidColorBrush&lt;/font&gt; depending on the state of the firewall.&lt;/p&gt;
&lt;p&gt;The Convert method has a &lt;font color="#000080"&gt;value&lt;/font&gt; parameter. This value is the &lt;font color="#000080"&gt;State&lt;/font&gt; parameter we bind the &lt;font color="#000080"&gt;Ellipse Fill&lt;/font&gt; property to in our XAML. This parameter will let us know wether the firewall state is on or off. Then, depending of it and the colour we want to apply to each of the states, we will return the correct colour back to the &lt;font color="#000080"&gt;Ellipse Fill&lt;/font&gt; property.&lt;/p&gt;
&lt;p&gt;Finally, we will add some logic to code behind of our sample application:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Firewall &lt;/span&gt;Firewall {&lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;set&lt;/span&gt;;}

&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;Window1()
{
    InitializeComponent();

    Firewall = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;();
    &lt;span style="COLOR: green"&gt;// Set the DataContext to our Firewall object.
    &lt;/span&gt;DataContext = Firewall;
}

&lt;span style="COLOR: blue"&gt;private void &lt;/span&gt;OnClicked(&lt;span style="COLOR: blue"&gt;object &lt;/span&gt;sender, &lt;span style="COLOR: #2b91af"&gt;RoutedEventArgs &lt;/span&gt;e)
{
    Firewall.State = &lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;.On;
}

&lt;span style="COLOR: blue"&gt;private void &lt;/span&gt;OffClicked(&lt;span style="COLOR: blue"&gt;object &lt;/span&gt;sender, &lt;span style="COLOR: #2b91af"&gt;RoutedEventArgs &lt;/span&gt;e)
{
    Firewall.State = &lt;span style="COLOR: #2b91af"&gt;Firewall&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;States&lt;/span&gt;.Off;
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here, we create a public &lt;font color="#000080"&gt;Firewall&lt;/font&gt; property, then we assign it to our application &lt;font color="#000080"&gt;DataContext&lt;/font&gt;. This means that our &lt;font color="#000080"&gt;Firewall&lt;/font&gt; object and its properties will be available for binding in our application context(The &lt;font color="#000080"&gt;Ellipse Fill&lt;/font&gt; property uses its &lt;font color="#000080"&gt;State&lt;/font&gt; property). Also, we added a couple of methods attached to the On and Off buttons &lt;font color="#000080"&gt;Click&lt;/font&gt; event. Those methods will simply change the firewall &lt;font color="#000080"&gt;State&lt;/font&gt; property accordingly. After one of those buttons are clicked, the &lt;font color="#000080"&gt;INotifyPropertyChange&lt;/font&gt; interface together with the data binding engine will do its magic, then our converter will be called to get the correct colour for our ellipses.&lt;/p&gt;
&lt;p&gt;If everything has been done correctly, you should be able to run the sample application and change the state of the firewall. Enjoy!&lt;/p&gt;&lt;img src="http://blogs.imeta.co.uk/FMoreno/aggbug/498.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francisco Moreno</dc:creator>
            <guid>http://blogs.imeta.co.uk/FMoreno/archive/2008/11/07/498.aspx</guid>
            <pubDate>Fri, 07 Nov 2008 19:52:55 GMT</pubDate>
            <wfw:comment>http://blogs.imeta.co.uk/FMoreno/comments/498.aspx</wfw:comment>
            <comments>http://blogs.imeta.co.uk/FMoreno/archive/2008/11/07/498.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.imeta.co.uk/FMoreno/comments/commentRss/498.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.imeta.co.uk/FMoreno/services/trackbacks/498.aspx</trackback:ping>
        </item>
        <item>
            <title>[WPF] Cool effects with Styles &amp;amp; Triggers</title>
            <link>http://blogs.imeta.co.uk/FMoreno/archive/2008/10/01/414.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFCooleffectswithStylesTriggers_11835/Capture.png" target="_blank" rel="lightbox"&gt;&lt;img title="Final Result" style="display: inline" height="332" alt="Final Result" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFCooleffectswithStylesTriggers_11835/Capture_thumb.png" width="433" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Today we will learn how to apply cool effects to our application making use of &lt;font color="#000080"&gt;Styles&lt;/font&gt; and &lt;font color="#000080"&gt;Triggers&lt;/font&gt;&lt;font color="#000000"&gt;. In &lt;a href="http://blogs.imeta.co.uk/FMoreno/archive/2008/08/26/332.aspx" target="_blank"&gt;a previous article&lt;/a&gt;, I introduced WPF Styles and explained one of its main uses. Please read it if you still haven’t.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Let’s start by creating a new WPF Application project in Visual Studio. We are going to edit some default properties, so our XAML will look like this:&lt;/p&gt;  &lt;pre class="code"&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&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;="TriggersSample.Window1"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;="Cool effects with styles and triggers" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="300" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="400" &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="CadetBlue"&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;We are going to start from the interesting part in this article. So now, before adding any controls to our application, let’s open App.xaml. We will add the styles that our controls will use.&lt;/p&gt;

&lt;p&gt;Let’s start by creating a new style for a title label. This label’s size will be bigger than default and will have an outer glow effect, similar to the text over glass in Windows Vista. The style will be as follows:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="TitleLabelStyle" &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="FontSize" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="24" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="HorizontalAlignment" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="BitmapEffect"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;OuterGlowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;GlowColor&lt;/span&gt;&lt;span style="color: blue"&gt;="White" &lt;/span&gt;&lt;span style="color: red"&gt;GlowSize&lt;/span&gt;&lt;span style="color: blue"&gt;="7"/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;As you can see, styles are pretty straightforward and self-explaining. Notice, however, that for the &lt;font color="#000080"&gt;OuterGlowBitmapEffect&lt;/font&gt; we have to explicitly declare its Value since it is a more complex property than, for instance, &lt;font color="#000080"&gt;FontSize&lt;/font&gt;.&lt;/p&gt;

&lt;p&gt;Let’s now add another style for a label. This time the label will be similar to the default one except for the font size and the glow effect:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="LabelStyle" &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="FontSize" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="14" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Height" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="30" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Width" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="120" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="BitmapEffect"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;OuterGlowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;GlowColor&lt;/span&gt;&lt;span style="color: blue"&gt;="White" &lt;/span&gt;&lt;span style="color: red"&gt;GlowSize&lt;/span&gt;&lt;span style="color: blue"&gt;="5"/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;There isn't too much to explain here since it is almost the same style as the title label uses. In a future article I will show you how to “inherit” styles so you don't have to repeat properties for controls of the same type. &lt;/p&gt;

&lt;p&gt;Finally, we will add a new style for a textbox. This style will make use of &lt;font color="#000080"&gt;Triggers&lt;/font&gt;. This let us change the control’s appearance when a specific event or condition takes place:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="TextBoxStyle" &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="FontSize" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="14" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Width" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="180" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Height" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="30" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="VerticalContentAlignment" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Trigger &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="IsFocused" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="True"&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="BitmapEffect"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;OuterGlowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;GlowColor&lt;/span&gt;&lt;span style="color: blue"&gt;="Purple" &lt;/span&gt;&lt;span style="color: red"&gt;GlowSize&lt;/span&gt;&lt;span style="color: blue"&gt;="8"/&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Trigger&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Trigger &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="IsMouseOver" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="True"&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="BitmapEffect"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;OuterGlowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;GlowColor&lt;/span&gt;&lt;span style="color: blue"&gt;="Gold" &lt;/span&gt;&lt;span style="color: red"&gt;GlowSize&lt;/span&gt;&lt;span style="color: blue"&gt;="8"/&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Trigger&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Notice here the use of Triggers. When the textbox’s &lt;font color="#000080"&gt;IsFocused&lt;/font&gt; property is true it will show a purple glow effect; when the &lt;font color="#000080"&gt;IsMouseOver&lt;/font&gt; property is true, it will show a gold glow effect. This gives us a wide array of possibilities to play with, getting cool effects as the ones shown in this article.&lt;/p&gt;

&lt;p&gt;Now let’s back to our Window1.xaml XAML code. We will now add the controls and their &lt;font color="#000080"&gt;Style&lt;/font&gt; properties. Add a &lt;font color="#000080"&gt;StackPanel&lt;/font&gt; whose &lt;font color="#000080"&gt;Orientation&lt;/font&gt; property is set to &lt;font color="#000080"&gt;Vertical&lt;/font&gt; and its &lt;font color="#000080"&gt;Margin&lt;/font&gt; property to &lt;font color="#000080"&gt;10,10,10,10&lt;/font&gt;&lt;font color="#000000"&gt;. The rest of controls will be declared inside this &lt;font color="#000080"&gt;StackPanel&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;Then add the title label setting its Style property to the one we have previously declared. Add whatever text as its content.&lt;/p&gt;

&lt;p&gt;Add a new &lt;font color="#000080"&gt;StackPanel&lt;/font&gt; whose &lt;font color="#000080"&gt;Orientation&lt;/font&gt; property is set to &lt;font color="#000080"&gt;Horizontal&lt;/font&gt; and its margin property to &lt;font color="#000080"&gt;10,10,10,10&lt;/font&gt;. Inside this &lt;font color="#000080"&gt;StackPanel&lt;/font&gt;, let’s add a &lt;font color="#000080"&gt;Label&lt;/font&gt; and a &lt;font color="#000080"&gt;TextBox&lt;/font&gt; control. Set their &lt;font color="#000080"&gt;Style&lt;/font&gt; property accordingly.&lt;/p&gt;

&lt;p&gt;Now copy and paste the previous StackPanel and its contents so we end up with 3 labels and 3 textboxes. This is not crucial, but this way we can better test the &lt;font color="#000080"&gt;IsFocused&lt;/font&gt; and &lt;font color="#000080"&gt;IsMouseOver&lt;/font&gt; glow effects with multiple textboxes. The code should look like this:&lt;/p&gt;

&lt;pre class="code"&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;Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;="Vertical" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10"&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;TitleLabelStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Outer glow text&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel &lt;/span&gt;&lt;span style="color: red"&gt;Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;="Horizontal" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;LabelStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Option 1&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;TextBoxStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel &lt;/span&gt;&lt;span style="color: red"&gt;Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;="Horizontal" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;LabelStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Option 2&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;TextBoxStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel &lt;/span&gt;&lt;span style="color: red"&gt;Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;="Horizontal" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;LabelStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Option 3&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;DynamicResource &lt;/span&gt;&lt;span style="color: red"&gt;TextBoxStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}"/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;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;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;It’s time to run the application. If everything is right, you should be able to test the effects we have just added to our controls using &lt;font color="#000080"&gt;Styles&lt;/font&gt; and &lt;font color="#000080"&gt;Triggers&lt;/font&gt;. Enjoy!&lt;/p&gt;&lt;img src="http://blogs.imeta.co.uk/FMoreno/aggbug/414.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francisco Moreno</dc:creator>
            <guid>http://blogs.imeta.co.uk/FMoreno/archive/2008/10/01/414.aspx</guid>
            <pubDate>Wed, 01 Oct 2008 18:40:02 GMT</pubDate>
            <wfw:comment>http://blogs.imeta.co.uk/FMoreno/comments/414.aspx</wfw:comment>
            <comments>http://blogs.imeta.co.uk/FMoreno/archive/2008/10/01/414.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.imeta.co.uk/FMoreno/comments/commentRss/414.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.imeta.co.uk/FMoreno/services/trackbacks/414.aspx</trackback:ping>
        </item>
        <item>
            <title>[WPF] Binding to a Control</title>
            <link>http://blogs.imeta.co.uk/FMoreno/archive/2008/09/10/366.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBindingtoaControl_F4E1/Final.png" target="_blank"&gt;&lt;img height="422" alt="Final" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBindingtoaControl_F4E1/Final_thumb.png" width="522" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;WPF provides powerful data-binding capabilities, yet easy to implement and understand that let you develop applications by writing a few lines of code. In this article I will show you how to bind control properties to other control properties without writing any code-behind. The sample application contains to &lt;font color="#800000"&gt;Slider&lt;/font&gt; controls and one &lt;font color="#800000"&gt;Button&lt;/font&gt;&lt;font color="#000000"&gt;. The sliders will modify both the &lt;font color="#000080"&gt;Height&lt;/font&gt; and the &lt;font color="#000080"&gt;Width&lt;/font&gt; properties of the button in real-time. In order to achieve this, we bind the sliders' &lt;font color="#0000a0"&gt;Value&lt;/font&gt; property to the &lt;font color="#000080"&gt;Height&lt;/font&gt; and the &lt;font color="#000080"&gt;Width&lt;/font&gt; properties of the button.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Let's start by firing up Visual Studio and creating a new WPF Application project. After that, we will change the size of our application so the contents that we will be adding later can fit. Use &lt;em&gt;400&lt;/em&gt; for the &lt;font color="#000080"&gt;Height&lt;/font&gt; and &lt;em&gt;500&lt;/em&gt; for the &lt;font color="#000080"&gt;Width&lt;/font&gt; properties of the &lt;font color="#800000"&gt;Window&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;Next we are going to replace the default &lt;font color="#800000"&gt;Grid&lt;/font&gt; for a &lt;font color="#800000"&gt;StackPanel&lt;/font&gt;. So our XAML should look like this so far:&lt;/p&gt;  &lt;pre class="code"&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&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;="BasicBinding.Window1"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;="Basic Binding" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="400" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="500"&amp;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;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;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;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Now we are going to start adding controls to our application. Let's start by adding two &lt;font color="#800000"&gt;Label&lt;/font&gt; and two &lt;font color="#800000"&gt;Slider&lt;/font&gt; controls:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button's Height:&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Slider &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="sliderHeight" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="5,5,5,5" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="50" &lt;/span&gt;&lt;span style="color: red"&gt;Maximum&lt;/span&gt;&lt;span style="color: blue"&gt;="150" &lt;/span&gt;&lt;span style="color: red"&gt;Minimum&lt;/span&gt;&lt;span style="color: blue"&gt;="20" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="50"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Slider&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button's Width:&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Slider &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="sliderWidth" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="5,5,5,5" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="50" &lt;/span&gt;&lt;span style="color: red"&gt;Maximum&lt;/span&gt;&lt;span style="color: blue"&gt;="150" &lt;/span&gt;&lt;span style="color: red"&gt;Minimum&lt;/span&gt;&lt;span style="color: blue"&gt;="20" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="50"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Slider&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The sliders' properties are self-explanatory: we have set a maximum of &lt;em&gt;150&lt;/em&gt;, a minimum of &lt;em&gt;20&lt;/em&gt; and a start value of &lt;em&gt;50&lt;/em&gt;. This way, the button will be always visible even though the sliders' value is set to its minimum.&lt;/p&gt;

&lt;p&gt;Now it's time to add the button, which is the interesting part of this article:&lt;/p&gt;

&lt;pre class="code"&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;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="button" &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: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;ElementName&lt;/span&gt;&lt;span style="color: blue"&gt;=sliderWidth, &lt;/span&gt;&lt;span style="color: red"&gt;Path&lt;/span&gt;&lt;span style="color: blue"&gt;=Value}" &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: #a31515"&gt;Binding &lt;/span&gt;&lt;span style="color: red"&gt;ElementName&lt;/span&gt;&lt;span style="color: blue"&gt;=sliderHeight, &lt;/span&gt;&lt;span style="color: red"&gt;Path&lt;/span&gt;&lt;span style="color: blue"&gt;=Value}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&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;p&gt;As you can see, we are binding the sliders' &lt;font color="#000080"&gt;Value&lt;/font&gt; property to both the &lt;font color="#000080"&gt;Height&lt;/font&gt; and the &lt;font color="#000080"&gt;Width&lt;/font&gt; properties of the button. Let's explain some concepts used here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;font color="#000080"&gt;ElementName&lt;/font&gt; property is one of the ways you can explicitly set the source of a Binding and override the inherited data context. &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.elementname.aspx" target="_blank"&gt;More info.&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Use the &lt;font color="#000080"&gt;Path&lt;/font&gt; property to specify the source value you want to bind to (normally the name of the property of the source object to use for the binding, such as &lt;em&gt;Path=PropertyName&lt;/em&gt;). &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.path.aspx" target="_blank"&gt;More info.&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's time to test the application. If everything is right, you should be able to resize the button using the sliders.&lt;/p&gt;

&lt;p&gt;As we have seen, WPF data-binding is very powerful and easy to implement. It saves you a lot of code and is quite flexible. Now it is your turn to play with it. Enjoy.&lt;/p&gt;&lt;img src="http://blogs.imeta.co.uk/FMoreno/aggbug/366.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francisco Moreno</dc:creator>
            <guid>http://blogs.imeta.co.uk/FMoreno/archive/2008/09/10/366.aspx</guid>
            <pubDate>Wed, 10 Sep 2008 15:25:10 GMT</pubDate>
            <wfw:comment>http://blogs.imeta.co.uk/FMoreno/comments/366.aspx</wfw:comment>
            <comments>http://blogs.imeta.co.uk/FMoreno/archive/2008/09/10/366.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.imeta.co.uk/FMoreno/comments/commentRss/366.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.imeta.co.uk/FMoreno/services/trackbacks/366.aspx</trackback:ping>
        </item>
        <item>
            <title>[WPF] Uniform look and maintainability using Styles</title>
            <link>http://blogs.imeta.co.uk/FMoreno/archive/2008/08/26/332.aspx</link>
            <description>&lt;p&gt;Styles are very common concept in web and application development. A button's height, width, font color or font style are considered part of that button's &lt;em&gt;style.&lt;/em&gt; In this article I will show you how to make use of the WPF styles to achieve a high level of maintainability, uniform look and cleaner code in your application.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Let's start by firing up Visual Studio and creating a new WPF Application project. Once the project has been created, we will create a &lt;span style="color: #a31515"&gt;Button&lt;font color="#000000"&gt; with some basic but new features:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #a31515"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre class="code"&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;="Button" 
                &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="200" 
                &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="100" 
                &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="34" 
                &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;="White" 
                &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="DarkGreen" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The button should look like this:&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFUniformlookandmaintainabilityusingSty_10F57/1.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="342" alt="Green Button" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFUniformlookandmaintainabilityusingSty_10F57/1_thumb.png" width="342" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Now imagine you have around 10 buttons in your application that have the same style. It is not hard to guess that your code will become quite repetitive and messy. This is one of the reasons WPF Styles exist. Let's move all those properties to a better place so we can reuse them easily with little or no effort.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Let's open the &lt;em&gt;App.xaml &lt;/em&gt;file in Visual Studio. We will add all the button custom properties into a  &lt;span style="color: #a31515"&gt;Style&lt;font color="#000000"&gt;. The syntax is pretty basic and the result will be this:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="color: #a31515"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Application.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="MyButtonStyle" &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="Button"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Background" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="DarkGreen" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Foreground" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="White" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="FontSize" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="34" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Width" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="200" /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Height" &lt;/span&gt;&lt;span style="color: red"&gt;Value&lt;/span&gt;&lt;span style="color: blue"&gt;="100" /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
 &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Application.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now its use will be:&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;pre class="code"&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;="Button" &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;MyButtonStyle&lt;/span&gt;&lt;span style="color: blue"&gt;}" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, now the code is much cleaner, can be maintained easily and will provide an uniform look to your application by writing few lines of code. Let's explain some of the things we have seen in these code snippets:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt; is the name by which that style will be referenced in our XAML using the &lt;span style="color: #a31515"&gt;Style &lt;/span&gt;property.&lt;/li&gt;

  &lt;li&gt;The &lt;span style="color: red"&gt;TargetType&lt;/span&gt; tell us that this style will be applied only to &lt;span style="color: #a31515"&gt;Button&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/span&gt;objects.&lt;/li&gt;

  &lt;li&gt;For more information about why we have used &lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;please visit &lt;a href="http://msdn.microsoft.com/en-us/library/ms750613.aspx#staticdynamic" target="_blank"&gt;MSDN Resources Overview&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;As we have seen, the use of Styles in WPF is really easy and gives us lots of advantages over declaring properties &lt;em&gt;in line&lt;/em&gt;. There is more advanced uses of Styles, but we will see that in future articles on this blog. Enjoy.&lt;/p&gt;&lt;img src="http://blogs.imeta.co.uk/FMoreno/aggbug/332.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francisco Moreno</dc:creator>
            <guid>http://blogs.imeta.co.uk/FMoreno/archive/2008/08/26/332.aspx</guid>
            <pubDate>Tue, 26 Aug 2008 18:21:43 GMT</pubDate>
            <wfw:comment>http://blogs.imeta.co.uk/FMoreno/comments/332.aspx</wfw:comment>
            <comments>http://blogs.imeta.co.uk/FMoreno/archive/2008/08/26/332.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.imeta.co.uk/FMoreno/comments/commentRss/332.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.imeta.co.uk/FMoreno/services/trackbacks/332.aspx</trackback:ping>
        </item>
        <item>
            <title>[WPF] Basic layout using the Grid</title>
            <link>http://blogs.imeta.co.uk/FMoreno/archive/2008/07/18/310.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBasiclayoutusingtheGrid_1084D/FinalResult.png" target="_blank"&gt;&lt;img height="381" alt="The final result" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBasiclayoutusingtheGrid_1084D/FinalResult_thumb.png" width="534" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Your application layout is one of the first things you have to plan before starting the actual development. In this basic tutorial, I will show you how to design a basic layout for your applications using the &lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;control.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;First of all, we will need to create a new WPF Application project. To do so, fire up Visual Studio and select &lt;em&gt;File &amp;gt; New &amp;gt; Project... &lt;/em&gt;Choose &lt;em&gt;WPF Application&lt;/em&gt; and click &lt;em&gt;OK&lt;/em&gt;. Once your project has been created, we will change the size of our application window so we can better see our progress as shown in the following code snippet:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&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&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;="WPFBasicLayout.Window1"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"
    &lt;/span&gt;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;="WPF Basic Layout" &lt;/span&gt;&lt;strong&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="350" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;="500"&lt;/strong&gt;&amp;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;/pre&gt;

  &lt;pre class="code"&gt;&lt;span style="color: blue"&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;
&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;/blockquote&gt;

&lt;p&gt;Notice that Visual Studio automatically places a &lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;control for us. The &lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;is the most complex layout control and probably the one we will use the most. Our next task is to declare columns and rows definitions inside our &lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;. The idea is to have four parts in our application: the header, the footer, a sidebar and the main content.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&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;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ColumnDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ColumnDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;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;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;So far, our window should look like this in the Visual Studio designer:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBasiclayoutusingtheGrid_1084D/RowsColumnsDefinitions.png" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="377" alt="Rows and columns definitions" src="http://blogs.imeta.co.uk/images/blogs_imeta_co_uk/FMoreno/WindowsLiveWriter/WPFBasiclayoutusingtheGrid_1084D/RowsColumnsDefinitions_thumb.png" width="532" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;To keep this tutorial simple, we will use &lt;span style="color: #a31515"&gt;Border &lt;/span&gt;and &lt;span style="color: #a31515"&gt;Label &lt;/span&gt;controls as the content of the four parts of our application. We will add one &lt;span style="color: #a31515"&gt;Border &lt;/span&gt;and a &lt;span style="color: #a31515"&gt;Label &lt;/span&gt;for each part of our application. Notice how we place them in the row and column we want using &lt;span style="color: red"&gt;Grid.Row&lt;/span&gt; and &lt;span style="color: red"&gt;Grid.Column&lt;/span&gt; properties respectively:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&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;Grid.Column&lt;/span&gt;&lt;span style="color: blue"&gt;="0" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="color: blue"&gt;="0" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.ColumnSpan&lt;/span&gt;&lt;span style="color: blue"&gt;="2" &lt;/span&gt;&lt;span style="color: red"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;="LightBlue" &lt;/span&gt;&lt;span style="color: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;="2,2,2,2" &lt;/span&gt;&lt;span style="color: red"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="05,05,05,05"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="color: blue"&gt;="0" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="color: blue"&gt;="1" &lt;/span&gt;&lt;span style="color: red"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;="LightBlue" &lt;/span&gt;&lt;span style="color: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;="2,2,2,2" &lt;/span&gt;&lt;span style="color: red"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="05,05,05,05"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Sidebar&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="color: blue"&gt;="0" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="color: blue"&gt;="2" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.ColumnSpan&lt;/span&gt;&lt;span style="color: blue"&gt;="2" &lt;/span&gt;&lt;span style="color: red"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;="LightBlue" &lt;/span&gt;&lt;span style="color: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;="2,2,2,2" &lt;/span&gt;&lt;span style="color: red"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="05,05,05,05"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Footer&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Column&lt;/span&gt;&lt;span style="color: blue"&gt;="1" &lt;/span&gt;&lt;span style="color: red"&gt;Grid.Row&lt;/span&gt;&lt;span style="color: blue"&gt;="1" &lt;/span&gt;&lt;span style="color: red"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;="LightBlue" &lt;/span&gt;&lt;span style="color: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;="2,2,2,2" &lt;/span&gt;&lt;span style="color: red"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: blue"&gt;="10,10,10,10" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="05,05,05,05"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Main Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;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;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice also the &lt;span style="color: red"&gt;Grid.ColumnSpan &lt;/span&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;property. That means that that specific column will take two columns, beginning from the one it was placed. This happens with the header and the footer because we want then to take all the width they have available.&lt;/p&gt;

&lt;p&gt;In future posts, I will show you how to move those repeated properties into &lt;em&gt;Styles&lt;/em&gt; for cleaner code.&lt;/p&gt;

&lt;p&gt;Our application is getting the look we are looking for, but as you can see we got some problems: the header and the footer are too big and the sidebar and the main content are taking the same space. What we want is a smaller header and footer and a thinner sidebar, so the room left is taken by the main content. In order to get the desired effect, we need to add &lt;span style="color: red"&gt;Width &lt;/span&gt;and &lt;span style="color: red"&gt;Height &lt;/span&gt;properties to some of the &lt;span style="color: #a31515"&gt;ColumnDefinition &lt;/span&gt;and &lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;elements respectively. We will set those properties to &lt;em&gt;Auto&lt;/em&gt; for the the first column and for the first and third row. That way, the header, the footer and the sidebar will resize accordingly based on the size of their content. All the room left will be available for the main content.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&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;
    &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;="Auto"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ColumnDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;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;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto"/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;RowDefinition &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto"/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now it is time to run our application and check the final result. As you can see, the layout is pretty basic but quite common and useful. Notice how the different parts of our application are resized accordingly when the application is resized or maximized.&lt;/p&gt;

&lt;p&gt;Now that you have this basic layout set up, it is up to you to add controls, images and text to improve the results.&lt;/p&gt;&lt;img src="http://blogs.imeta.co.uk/FMoreno/aggbug/310.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Francisco Moreno</dc:creator>
            <guid>http://blogs.imeta.co.uk/FMoreno/archive/2008/07/18/310.aspx</guid>
            <pubDate>Fri, 18 Jul 2008 07:25:57 GMT</pubDate>
            <wfw:comment>http://blogs.imeta.co.uk/FMoreno/comments/310.aspx</wfw:comment>
            <comments>http://blogs.imeta.co.uk/FMoreno/archive/2008/07/18/310.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.imeta.co.uk/FMoreno/comments/commentRss/310.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.imeta.co.uk/FMoreno/services/trackbacks/310.aspx</trackback:ping>
        </item>
    </channel>
</rss>