Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version
Go to top

A WPF Problem Solved Two Very Different Ways - Using XAML Only - Using a Custom Control

, 28 Oct 2007
Article on solving a problem using a XAML only approach and then solving that same problem using WPF custom controls.
<UserControl 
    x:Class="Demo3"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Tag="CheckListBox" 
    >
    <UserControl.Resources>

        <ObjectDataProvider x:Key="SelectionModeValues" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="SelectionMode" />
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

        <x:Array x:Key="someTestData" Type="{x:Type sys:String}">
            <sys:String>Love WPF!</sys:String>
            <sys:String>No Code</sys:String>
            <sys:String>Just</sys:String>
            <sys:String>XAML Baby!</sys:String>
            <sys:String>ListBox Works Using</sys:String>
            <sys:String>Single</sys:String>
            <sys:String>Muliple</sys:String>
            <sys:String>Extended</sys:String>
            <sys:String>Selection Modes.</sys:String>
            <sys:String>You can</sys:String>
            <sys:String>SHIFT-Click in</sys:String>
            <sys:String>Extened Mode</sys:String>
            <sys:String>over the text or</sys:String>
            <sys:String>over the CheckBox.</sys:String>
            <sys:String>DataBind Items!</sys:String>
            <sys:String>XAML Declared Items!</sys:String>
            <sys:String>Check Out</sys:String>
            <sys:String>All</sys:String>
            <sys:String>The</sys:String>
            <sys:String>Provided</sys:String>
            <sys:String>Samples.</sys:String>
            <sys:String>Does it look</sys:String>
            <sys:String>like several</sys:String>
            <sys:String>controls are</sys:String>
            <sys:String>doing the work</sys:String>
            <sys:String>or just one?</sys:String>
            <sys:String>Nice separation</sys:String>
            <sys:String>between the CheckBox</sys:String>
            <sys:String>and ListBoxItem!</sys:String>
        </x:Array>

        <!--Use the resources here to adjust the colors of your CheckListBox-->
    	<SolidColorBrush x:Key="outerBorderBackgroundBrush" Color="#FFADD8E6"/>
    	<SolidColorBrush x:Key="outerBorderBorderBrush" Color="#FF0000FF"/>
    	<SolidColorBrush x:Key="scrollViewerBorderBrush" Color="#FF000000"/>
		<SolidColorBrush x:Key="scrollViewerBackgroundBrush" Color="#FFFFFFFF"/>
        <SolidColorBrush x:Key="checkBoxBorderBrush" Color="#FF000000"/>

        <Style x:Key="aeroCheckListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
            <Style.Resources>
                
                <!--To use the normal ListBox selection hightlight and selection color after
                    the ListBox looses focus, just remove the below three resources-->
                
                <!-- This Style is used to prevent the ListBoxItems from using different 
                 colors when selected than when not selected. -->

                <!-- Prevents the selected items from having a different color background. -->
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />

                <!-- Prevents the selected items from having a different color 
                     background when the ListBox no longer has focus. -->
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />

                <!-- Ensures the selected item's text is visible. Insurance policy-->
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="{x:Static SystemColors.ControlTextColor}" />
            </Style.Resources>

            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
            <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
            <Setter Property="Padding" Value="2,0,0,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="16"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>

                            <!--The grid left margin of -20, gets the 
                                first column over to the left to give 
                                us that look that the CheckBoxes are 
                                outside our ListBox control-->
                            <Grid Background="Transparent" Width="16" Height="16" HorizontalAlignment="Left" Margin="-20,0,0,0">
                                
                                <BulletDecorator Margin="2,0,0,0" SnapsToDevicePixels="true" Background="Transparent" VerticalAlignment="Center">

                                    <BulletDecorator.Bullet>
                                        <Microsoft_Windows_Themes:BulletChrome BorderBrush="{StaticResource checkBoxBorderBrush}" IsChecked="{Binding Path=IsSelected, 
                                                RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}}" RenderMouseOver="{TemplateBinding IsMouseOver}" />
                                    </BulletDecorator.Bullet>
                                </BulletDecorator>
                            </Grid>

                            <!--This positions our content in the perfect position-->
                            <Border Margin="-10,0,10,0" Grid.Column="1" SnapsToDevicePixels="true" x:Name="Bd" VerticalAlignment="Center" MinHeight="16" Background="Transparent">

                                <ContentPresenter Content="{TemplateBinding Content}">
                                    <ContentPresenter.Resources>
                                        <Style TargetType="{x:Type TextBlock}">
                                            <Setter Property="TextWrapping" Value="Wrap"/>
                                        </Style>
                                    </ContentPresenter.Resources>
                                </ContentPresenter>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                            </Trigger>
                            
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="IsSelected" Value="true"/>
                                    <Condition Property="Selector.IsSelectionActive" Value="false"/>
                                </MultiTrigger.Conditions>
                                <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                            </MultiTrigger>
                            
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                            
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="aeroCheckListBoxStyle" TargetType="{x:Type ListBox}">
            <Setter Property="ItemContainerStyle" Value="{StaticResource aeroCheckListBoxItemStyle}"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBox}">
                        <!--This is the secret to having the area that the CheckBoxes are in 
                            blend with the color of the parent border control
                            making this area look like a separate control.-->
                        <Border CornerRadius="0" Background="{TemplateBinding Background}">
                            
                            <!--Disabling the HorizontalScrollBarVisibility allows the ContentPresenter 
                                TextBlocks to wrap if the ListBox is not wide enought for the text-->
                            <ScrollViewer HorizontalScrollBarVisibility="Disabled">
                                
                                <!--This border is Mr. Cool.  It places a line down the middle of the 
                                    control between the CheckBoxes and the ListBoxes items.-->
                                <Border Background="{StaticResource scrollViewerBackgroundBrush}" Margin="20,0,0,0" BorderBrush="{StaticResource scrollViewerBorderBrush}" BorderThickness="1,0,0,0" x:Name="border">
                                    
                                    <!--Our ListBoxItems are here-->
                                    <ItemsPresenter/>
                                    
                                </Border>
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Storyboard x:Key="TwinkleEyesTimeline" RepeatBehavior="Forever">
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.189"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="0.254"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="-0.006"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.286"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="-0.181"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="0.004"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path1" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.304"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="0.198"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="0.004"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path1" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.275"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="-0.392"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="-0.036"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path2" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.302"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="0.232"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="-0.056"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path2" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="0.11"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="-0.106"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="-0.114"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path3" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.181"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="0.195"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="0.037"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path3" Storyboard.TargetProperty="(Shape.Fill).(Brush.RelativeTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="-0.184"/>
                <SplineDoubleKeyFrame KeyTime="00:00:04" Value="-0.124"/>
                <SplineDoubleKeyFrame KeyTime="00:00:06" Value="-0.064"/>
            </DoubleAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path3" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                <SplineColorKeyFrame KeyTime="00:00:02" Value="#FFFBD90B"/>
                <SplineColorKeyFrame KeyTime="00:00:04" Value="#FFF8FB0B"/>
                <SplineColorKeyFrame KeyTime="00:00:06" Value="#FFFBD90B"/>
            </ColorAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                <SplineColorKeyFrame KeyTime="00:00:02" Value="#FFFBD90B"/>
                <SplineColorKeyFrame KeyTime="00:00:04" Value="#FFF8FB0B"/>
                <SplineColorKeyFrame KeyTime="00:00:06" Value="#FFFBD90B"/>
            </ColorAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path1" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                <SplineColorKeyFrame KeyTime="00:00:02" Value="#FFFBD90B"/>
                <SplineColorKeyFrame KeyTime="00:00:04" Value="#FFF8FB0B"/>
                <SplineColorKeyFrame KeyTime="00:00:06" Value="#FFFBD90B"/>
            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </UserControl.Resources>
    
    <UserControl.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource TwinkleEyesTimeline}"/>
        </EventTrigger>
    </UserControl.Triggers>

    <Grid Width="Auto" Height="Auto">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <DockPanel HorizontalAlignment="Stretch">

            <StackPanel DockPanel.Dock="Left" Orientation="Horizontal" HorizontalAlignment="Left" Margin="10,10,10,10" VerticalAlignment="Top" Height="Auto">

                <TextBlock Margin="0,0,10,0" VerticalAlignment="Center">Selection Mode:</TextBlock>

                <ComboBox x:Name="selectionModeCombo" DataContext="{StaticResource SelectionModeValues}" IsReadOnly="True" ItemsSource="{Binding}" SelectedIndex="0"/>

            </StackPanel>
            
            <TextBlock DockPanel.Dock="Right" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="18" FontStyle="Normal" FontWeight="Normal" Padding="5,5,5,5">
                <TextBlock.Background>
                    <LinearGradientBrush EndPoint="0.508,0.835" StartPoint="0.508,0.167">
                        <GradientStop Color="#FFFFE8D0" Offset="0"/>
                        <GradientStop Color="#FFF88206" Offset="1"/>
                    </LinearGradientBrush>
                </TextBlock.Background>No Code, Just XAML!
            </TextBlock>
        </DockPanel>

        <Border CornerRadius="10" Background="{StaticResource outerBorderBackgroundBrush}" Padding="10" Grid.Row="1" BorderBrush="{StaticResource outerBorderBorderBrush}" BorderThickness="1" Margin="10,10,10,10" >
            
            <Grid>
                <Rectangle Margin="20,-1,-1,-1" Fill="{StaticResource scrollViewerBorderBrush}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                
                <ListBox Background="{StaticResource outerBorderBackgroundBrush}"
                         ItemsSource="{Binding Path=Items, Mode=OneWay, Source={StaticResource someTestData}}"
                         SelectionMode="{Binding Path=Text, ElementName=selectionModeCombo, Mode=Default}"
                         Style="{StaticResource aeroCheckListBoxStyle}"
                         IsSynchronizedWithCurrentItem="True" FontSize="12" Height="Auto"
                         VerticalAlignment="Stretch" SelectedIndex="0"/>
            </Grid>
        </Border>

        <Border CornerRadius="10" Background="{StaticResource outerBorderBackgroundBrush}" Padding="10" Grid.Row="2" BorderBrush="{StaticResource outerBorderBorderBrush}" BorderThickness="1" Margin="10,10,10,10">
            
            <Grid>
                <Rectangle Margin="20,-1,-1,-1" Fill="{StaticResource scrollViewerBorderBrush}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
                
                <ListBox Background="{StaticResource outerBorderBackgroundBrush}" 
                         SelectionMode="{Binding Path=Text, ElementName=selectionModeCombo, Mode=Default}" 
                         Style="{StaticResource aeroCheckListBoxStyle}" 
                         IsSynchronizedWithCurrentItem="True" FontSize="18" Height="Auto" 
                         VerticalAlignment="Stretch" SelectedIndex="0">
                
                    <ListBox.Resources>
                        <VisualBrush x:Key="easterEggVisualBrush" Visual="{Binding ElementName=gridEasterEgg}"/>
                    </ListBox.Resources>

                    <ListBoxItem>CTRL-Click</ListBoxItem>
                    <ListBoxItem>To deselect item.</ListBoxItem>
                    <ListBoxItem>Don't be laughing</ListBoxItem>
                    <ListBoxItem>at Jack-O's.</ListBoxItem>

                    <Grid>
                        <Ellipse HorizontalAlignment="Left" Height="50" Width="50"
                             Margin="0,5,0,5" Stroke="BurlyWood" Fill="AntiqueWhite"
                             StrokeThickness="1"/>
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="8,15.113,0,0" 
                                 VerticalAlignment="Top" Width="10.88" Height="7.273"/>
                        
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="27.934,15.113,0,0" 
                                 VerticalAlignment="Top" Width="10.963" Height="7.273"/>
                        
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="20.672,24.705,0,26.329" 
                                 Width="7.957"/>
                        
                        <Path Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" 
                              HorizontalAlignment="Left" Margin="8.086,37.103,0,0" 
                              VerticalAlignment="Top" Width="33.635" Height="10.562">
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsClosed="True" StartPoint="32.107,4.0055">
                                        <PolyBezierSegment IsSmoothJoin="True" 
                                                           Points="30.999835,5.5937108 25.031532,7.511 
                                                           16.3035,7.511 7.575468,7.511 1.781416,5.4567758 
                                                           0.5,4.0055 -12.09973,-10.264404 7.5781247,3.5549446 
                                                           16.306157,3.5549446 25.034189,3.5549446 
                                                           42.945024,-11.541472 32.107,4.0055"/>
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                    </Grid>

                    <Grid>
                        <Ellipse HorizontalAlignment="Left" Height="50" Width="50"
                             Margin="0,5,0,5" Stroke="BurlyWood" Fill="#FFFFA332"
                             StrokeThickness="1"/>
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="8,15.113,0,0" 
                                 VerticalAlignment="Top" Width="10.88" Height="7.273"/>
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="27.934,15.113,0,0" 
                                 VerticalAlignment="Top" Width="10.963" Height="7.273"/>
                        <Ellipse Fill="#FFFFFFFF" Stroke="#FF000000" 
                                 HorizontalAlignment="Left" Margin="20.672,24.705,0,0" 
                                 VerticalAlignment="Top" Width="7.957" Height="8"/>
                        <Path Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" 
                              HorizontalAlignment="Left" Margin="8.086,37.103,0,0" 
                              VerticalAlignment="Top" Width="33.635" Height="10.562">
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsClosed="True" StartPoint="32.107,4.0055">
                                        <PolyBezierSegment 
                                            IsSmoothJoin="True" 
                                            Points="30.999835,5.5937108 25.031532,7.511 16.3035,7.511 
                                                7.575468,7.511 1.781416,5.4567758 0.5,4.0055 -12.09973,-10.264404 
                                                7.5781247,3.5549446 16.306157,3.5549446 25.034189,3.5549446 
                                                42.945024,-11.541472 32.107,4.0055"/>
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                        <Ellipse RenderTransformOrigin="0.121,-0.15" Fill="#FF000000" 
                                 Stroke="#FF000000" StrokeThickness="1" HorizontalAlignment="Left" 
                                 Margin="11.548,17.571,0,0" VerticalAlignment="Top" Width="3.479" Height="2.109">
                            <Ellipse.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="25.39"/>
                                </TransformGroup>
                            </Ellipse.RenderTransform>
                        </Ellipse>
                        <Ellipse RenderTransformOrigin="0.121,-0.15" Fill="#FF000000" 
                                 Stroke="#FF000000" StrokeThickness="1" Height="2.109" 
                                 HorizontalAlignment="Left" Margin="32.7,17.2,0,0" VerticalAlignment="Top" 
                                 Width="3.479">
                            <Ellipse.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="34.039"/>
                                </TransformGroup>
                            </Ellipse.RenderTransform>
                        </Ellipse>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" HorizontalAlignment="Left" 
                                   Margin="14.769,43,0,0" VerticalAlignment="Top" Width="2.74" Height="2.636">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="19.184"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" Width="1.441" 
                                   Height="2.636" HorizontalAlignment="Left" Margin="12.063,39,0,0" 
                                   VerticalAlignment="Top">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="19.184"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" Height="1.998" 
                                   HorizontalAlignment="Left" Margin="32,41,0,0" VerticalAlignment="Top" 
                                   Width="2.066">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="62.741"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" Height="1.821" 
                                   HorizontalAlignment="Left" Margin="27,45,0,0" VerticalAlignment="Top" 
                                   Width="1.586">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="-7.418"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" Width="2.74" 
                                   Height="1.837" HorizontalAlignment="Left" Margin="19.904,43,0,0" 
                                   VerticalAlignment="Top">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="19.184"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                        <Rectangle RenderTransformOrigin="0.5,0.5" Fill="#FF000000" 
                                   Stroke="#FF000000" StrokeThickness="1" Height="2.277" 
                                   HorizontalAlignment="Left" Margin="37,42,0,0" VerticalAlignment="Top" 
                                   Width="1.56">
                            <Rectangle.RenderTransform>
                                <TransformGroup>
                                    <RotateTransform Angle="33.41"/>
                                </TransformGroup>
                            </Rectangle.RenderTransform>
                        </Rectangle>
                    </Grid>


                    <Rectangle Margin="0,5,0,5" HorizontalAlignment="Left" Fill="Beige"
                               RadiusX="10" RadiusY="10" Stroke="Black" 
                               StrokeThickness="1" Width="50" Height="25"/>
                    <Ellipse HorizontalAlignment="Left" Height="50" Width="50" 
                             Margin="0,5,0,5" Stroke="BurlyWood" Fill="AntiqueWhite" 
                             StrokeThickness="1"/>
                    <Rectangle Margin="0,5,0,5" HorizontalAlignment="Left" Fill="Beige" 
                               RadiusX="10" RadiusY="10" Stroke="Black" StrokeThickness="1" 
                               Width="50" Height="25"/>
                    
                    <Grid x:Name="gridEasterEgg" Margin="0,0,0,10">
                        <Grid.Resources>
                            <Style TargetType="ToolTip">
                                <Setter Property="OverridesDefaultStyle" Value="true"/>
                                <Setter Property="HasDropShadow" Value="False"/>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="ToolTip">
                                            <Border Name="Border"
                                              Background="Transparent"
                                              BorderBrush="Transparent"
                                              BorderThickness="0"
                                              Width="{TemplateBinding Width}"
                                              Height="{TemplateBinding Height}">
                                                <ContentPresenter
                                                  Margin="4"
                                                  HorizontalAlignment="Left"
                                                  VerticalAlignment="Top" />
                                            </Border>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </Grid.Resources>
                        <Grid.ToolTip>
                            <StackPanel>
                                <Border CornerRadius="20" Padding="5" Background="OrangeRed" BorderBrush="Black" BorderThickness="1">
                                    <TextBlock FontSize="18" Foreground="Yellow" FontWeight="Bold" Text="I'm Busted!  You found my Easter Egg!" HorizontalAlignment="Center"/>
                                </Border>
                                <Rectangle Height="300" Width="300" Stroke="{x:Null}" Fill="{StaticResource easterEggVisualBrush}"/>
                            </StackPanel>
                        </Grid.ToolTip>

                        <Path RenderTransformOrigin="0.5,0.5" Fill="#FFC0935B" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" HorizontalAlignment="Left" Margin="73.651,33.184,0,0" VerticalAlignment="Top" Width="24.215" Height="48.637" Data="M4.9568709,-8.5217238 L8.6565623,-5.8973215 10.398456,-2.0214674 17.057149,-1.4495048 20.547979,2.5379387 18.904204,16.09934 20.880435,27.506461 23.455,39.165 0.5,39.165 1.3235146,23.330289 2.4907343,17.864944 2.1349618,11.228123 3.7259019,4.6491479 z">
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="0"/>
                                    <RotateTransform Angle="8.646"/>
                                    <TranslateTransform X="-0.67738301321261485" Y="-0.051206149167953185"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="#FFE19310" Stretch="Fill" Stroke="#FFBF6D0A" StrokeThickness="2" HorizontalAlignment="Left" Margin="8,72,0,0" VerticalAlignment="Top" Width="146.968" Height="139.98">
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsClosed="True" StartPoint="147.958050005476,75.4079709691332">
                                        <PolyBezierSegment Points="147.72031,85.646521 148.1586,92.109512 145.53512,99.205334 140.94343,111.62461 132.42434,121.3578 120.29583,129.94508 116.84253,132.39009 115.38149,138.33478 111.5283,140.17197 108.18563,141.76574 102.2656,142.41778 98.670676,143.50543 95.63043,144.42526 91.146799,143.69171 87.955992,144.21969"/>
                                        <BezierSegment Point1="83.9696258741498,144.879321496411" Point2="78.7954994096679,141.839258039694" Point3="74.6221623200268,141.839258039694" IsSmoothJoin="True"/>
                                        <PolyBezierSegment Points="67.221744,141.83926 64.464403,144.32478 57.716771,142.31547 54.555824,141.3742 47.469605,144.32499 44.499843,142.99072 41.448945,141.61999 34.341686,140.18775 31.52528,138.43497 27.353037,135.83839 23.61873,132.8354 20.312103,129.48203 15.882674,124.98999 12.220683,119.86921 9.3014745,114.25436 7.38414,110.56652 5.7872309,106.66556 4.5037613,102.5896"/>
                                        <BezierSegment Point1="1.81313329870277,94.0449022414951" Point2="2.71473538496186,84.4248479536194" Point3="2.71473538496186,74.6936535535812" IsSmoothJoin="True"/>
                                        <PolyBezierSegment Points="2.7147354,68.569376 1.2358775,62.925647 2.6242518,57.233599 4.4459989,49.764811 7.3911641,42.740275 11.271378,36.349363 16.059602,28.462911 19.481357,20.291847 26.763359,14.690991 32.005022,10.659434 40.591375,8.5616631 46.809717,6.0314318"/>
                                        <BezierSegment Point1="55.4609373234218,2.51126657071702" Point2="66.120125034146,13.4305618166965" Point3="76.0507459354887,13.4305618166965" IsSmoothJoin="True"/>
                                        <PolyBezierSegment Points="86.361728,13.430562 99.648436,3.1024898 108.59177,6.8827196 113.85516,9.1074877 118.81127,11.917644 123.37717,15.231641 126.12915,17.229067 129.31682,23.774431 131.76715,26.120069 138.61964,32.679797 138.99743,35.726582 142.95176,44.479442"/>
                                        <BezierSegment Point1="147.15797370457,53.7898372774125" Point2="148.23441556244,63.5058534959744" Point3="147.958050005476,75.4079709691332" IsSmoothJoin="True"/>
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" HorizontalAlignment="Left" Margin="96.655,77.982,0,0" VerticalAlignment="Top" Width="37.393" Height="130.12" Data="M97.256443,78.503908 C143.3641,118.82303 148.70515,160.09285 113.2493,207.58405" StrokeDashCap="Round" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.24,0.52" StartPoint="0.636,0.506">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="42.696" Height="119.505" Data="M95.381482,79.517421 C141.48913,119.83654 151.25483,150.32797 115.79898,197.81917" HorizontalAlignment="Left" Margin="107.27,75.328,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.232,0.621" StartPoint="0.644,0.571">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="29.378" Height="127.57" Data="M95.919683,78.099102 C142.02733,118.41822 149.17028,157.0978 113.71443,204.589" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Margin="86.57,80.676,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.24,0.52" StartPoint="0.636,0.506">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="8.544"/>
                                    <RotateTransform Angle="0"/>
                                    <TranslateTransform X="0" Y="2.2064133807127178"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="15.485" Height="126.364" Data="M96.229491,77.820278 C142.33714,118.1394 149.68553,155.59405 114.22968,203.08525" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Margin="74.362,79.359,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.252,0.515" StartPoint="0.624,0.511">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="8.544"/>
                                    <RotateTransform Angle="0"/>
                                    <TranslateTransform X="0" Y="2.2141505444462766"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="14.848" Height="129.974" Data="M97.828451,79.947988 C143.9361,120.26711 147.85402,161.38726 112.39817,208.87846" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Margin="52.039,76.44,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.252,0.623" StartPoint="0.582,0.615">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="-1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="-8.544"/>
                                    <RotateTransform Angle="0"/>
                                    <TranslateTransform X="0.65600000000000236" Y="2.1663003182493696"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="21.461" Height="129.867" Data="M94.684229,77.626671 C140.79188,117.94579 149.74047,158.95595 114.28462,206.44715" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Margin="33.786,74.2,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.252,0.623" StartPoint="0.582,0.615">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="-1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="-8.544"/>
                                    <RotateTransform Angle="0"/>
                                    <TranslateTransform X="-0.44300000000000495" Y="2.2488551041055587"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="{x:Null}" Stretch="Fill" StrokeThickness="3" Width="19.334" Height="113.917" Data="M84.875891,84.879344 C130.98355,125.19846 137.90636,150.01345 102.45051,197.50465" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Margin="18.075,80.739,0,0" VerticalAlignment="Top" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
                            <Path.Stroke>
                                <LinearGradientBrush EndPoint="1.252,0.623" StartPoint="0.582,0.615">
                                    <GradientStop Color="#FFD98927" Offset="0"/>
                                    <GradientStop Color="#FFFF8C00" Offset="1"/>
                                    <GradientStop Color="#FFA8603E" Offset="0.523"/>
                                </LinearGradientBrush>
                            </Path.Stroke>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="-1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="-8.544"/>
                                    <RotateTransform Angle="0"/>
                                    <TranslateTransform X="0.41100000000000136" Y="2.1847042514020174"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path RenderTransformOrigin="0.502,0.497" Stretch="Fill" Stroke="#FFBF6D0A" StrokeThickness="1" HorizontalAlignment="Left" Margin="31.729,99.301,0,0" VerticalAlignment="Top" Width="42.412" Height="31.257" Data="F1 M21.205999,0.50000018 C32.641609,0.50000006 41.911999,7.6716633 41.911999,16.518358 41.911999,22.176559 38.119785,23.505241 32.39386,23.716537 L32.411999,23.8335 C32.411999,27.657244 27.643385,30.757 21.761,30.757 15.878615,30.757 11.11,27.657244 11.11,23.8335 L11.125693,23.732306 C4.7863994,23.655817 0.49999994,22.533949 0.49999994,16.518358 0.49999994,7.6716633 9.7703915,0.50000006 21.205999,0.50000018 z" x:Name="path">
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="0"/>
                                    <RotateTransform Angle="-11.044"/>
                                    <TranslateTransform X="0" Y="0"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                            <Path.Fill>
                                <RadialGradientBrush GradientOrigin="0.504,0.867">
                                    <RadialGradientBrush.RelativeTransform>
                                        <TransformGroup>
                                            <ScaleTransform ScaleX="1" ScaleY="1"/>
                                            <SkewTransform AngleX="0" AngleY="0"/>
                                            <RotateTransform Angle="0"/>
                                            <TranslateTransform X="0" Y="0"/>
                                        </TransformGroup>
                                    </RadialGradientBrush.RelativeTransform>
                                    <GradientStop Color="#FFFBD90B" Offset="0"/>
                                    <GradientStop Color="#FFEE9120" Offset="1"/>
                                    <GradientStop Color="#FFF0801C" Offset="0.813"/>
                                </RadialGradientBrush>
                            </Path.Fill>
                        </Path>
                        <Path RenderTransformOrigin="0.502,0.497" Stretch="Fill" Stroke="#FFBF6D0A" StrokeThickness="1" Width="40.035" Height="31.257" Data="F1 M21.205999,0.50000018 C32.641609,0.50000006 41.911999,7.6716633 41.911999,16.518358 41.911999,22.176559 38.119785,23.505241 32.39386,23.716537 L32.411999,23.8335 C32.411999,27.657244 27.643385,30.757 21.761,30.757 15.878615,30.757 11.11,27.657244 11.11,23.8335 L11.125693,23.732306 C4.7863994,23.655817 0.49999994,22.533949 0.49999994,16.518358 0.49999994,7.6716633 9.7703915,0.50000006 21.205999,0.50000018 z" HorizontalAlignment="Left" Margin="97.827,100.725,0,0" VerticalAlignment="Top" x:Name="path1">
                            <Path.Fill>
                                <RadialGradientBrush GradientOrigin="0.504,0.867">
                                    <RadialGradientBrush.RelativeTransform>
                                        <TransformGroup>
                                            <ScaleTransform ScaleX="1" ScaleY="1"/>
                                            <SkewTransform AngleX="0" AngleY="0"/>
                                            <RotateTransform Angle="0"/>
                                            <TranslateTransform X="0" Y="0"/>
                                        </TransformGroup>
                                    </RadialGradientBrush.RelativeTransform>
                                    <GradientStop Color="#FFFBD90B" Offset="0"/>
                                    <GradientStop Color="#FFEE9120" Offset="1"/>
                                    <GradientStop Color="#FFF0801C" Offset="0.813"/>
                                </RadialGradientBrush>
                            </Path.Fill>
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="0"/>
                                    <RotateTransform Angle="8.7"/>
                                    <TranslateTransform X="0" Y="0"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Stretch="Fill" Stroke="#FFBF6D0A" StrokeThickness="1" HorizontalAlignment="Left" Margin="67.047,139.586,0,0" VerticalAlignment="Top" Width="43.117" Height="21.855" Data="M0.5,0.5 L42.617,0.5 22.168919,21.35456 z" x:Name="path3">
                            <Path.Fill>
                                <RadialGradientBrush GradientOrigin="0.498,-0.288">
                                    <RadialGradientBrush.RelativeTransform>
                                        <TransformGroup>
                                            <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.338" ScaleY="0.883"/>
                                            <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5"/>
                                            <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5"/>
                                            <TranslateTransform X="0.085" Y="-0.04"/>
                                        </TransformGroup>
                                    </RadialGradientBrush.RelativeTransform>
                                    <GradientStop Color="#FFFBD90B" Offset="0"/>
                                    <GradientStop Color="#FFEE9120" Offset="1"/>
                                    <GradientStop Color="#FFF0801C" Offset="0.813"/>
                                </RadialGradientBrush>
                            </Path.Fill>
                        </Path>
                        <Path Stretch="Fill" Stroke="#FFBF6D0A" StrokeThickness="1" HorizontalAlignment="Left" Margin="42.438,166.457,0,0" VerticalAlignment="Top" Width="88.615" Height="33.533" x:Name="path2">
                            <Path.Fill>
                                <RadialGradientBrush GradientOrigin="0.559,0.244">
                                    <RadialGradientBrush.RelativeTransform>
                                        <TransformGroup>
                                            <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.703" ScaleY="1.124"/>
                                            <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5"/>
                                            <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5"/>
                                            <TranslateTransform X="-0.029" Y="-0.09"/>
                                        </TransformGroup>
                                    </RadialGradientBrush.RelativeTransform>
                                    <GradientStop Color="#FFFBD90B" Offset="0"/>
                                    <GradientStop Color="#FFEE9120" Offset="1"/>
                                    <GradientStop Color="#FFF0801C" Offset="0.813"/>
                                </RadialGradientBrush>
                            </Path.Fill>
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsClosed="True" StartPoint="88.1154699293229,4.16872605802956">
                                        <BezierSegment Point1="88.1154699293229,9.70744012911727" Point2="85.7971719831627,15.5277858750907" Point3="74.8448190350759,25.016041287134"/>
                                        <PolyBezierSegment IsSmoothJoin="True" Points="67.019096,31.795631 53.425939,34.889 43.5235,34.889 19.762277,34.889 0.5,27.19076 0.5,17.6945 0.5,8.1982399 17.322247,16.880421 41.08347,16.880421"/>
                                        <PolyBezierSegment Points="44.600483,16.880421 60.889518,14.358593 64.218146,13.321178 66.882343,12.490842 88.11547,-2.7969297 88.11547,4.1687261"/>
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                        <Path RenderTransformOrigin="0.5,0.5" Fill="#FFB0670D" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" HorizontalAlignment="Left" Margin="70.557,180.993,0,0" VerticalAlignment="Top" Width="10.234" Height="10.435" Data="M0.5,0.5 L7.025,0.5 7.1029963,6.5597225 0.5,6.618 z">
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="0"/>
                                    <RotateTransform Angle="5.024"/>
                                    <TranslateTransform X="-0.00014983398359724731" Y="0.003415347785796996"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path RenderTransformOrigin="0.5,0.5" Fill="#FFB0670D" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" Width="10.234" Height="10.435" Data="M0.5,0.5 L7.025,0.5 7.1029963,6.5597225 0.5,6.618 z" HorizontalAlignment="Left" Margin="104.369,182.962,0,0" VerticalAlignment="Top">
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                    <SkewTransform AngleX="0" AngleY="0"/>
                                    <RotateTransform Angle="-27.958"/>
                                    <TranslateTransform X="-0.00014983398359724731" Y="0.003415347785796996"/>
                                </TransformGroup>
                            </Path.RenderTransform>
                        </Path>
                        <Path Fill="#FFC0935B" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" HorizontalAlignment="Left" Margin="77.983,39.846,0,0" VerticalAlignment="Top" Width="10.201" Height="37.538" Data="M87.683865,40.345618 C86.835435,43.38826 86.668612,46.540298 85.055187,49.283121 83.138956,52.540714 83.47798,54.422636 83.47798,58.746361 83.47798,62.28225 80.323567,63.747792 80.323567,67.420997 80.323567,69.173449 80.323567,70.9259 80.323567,72.678352 80.323567,76.24675 80.28078,74.643783 78.483493,76.884236"/>
                        <Path Fill="#FFC0935B" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" HorizontalAlignment="Left" Margin="84.292,45.366,0,0" VerticalAlignment="Top" Width="9.149" Height="34.121" Data="M92.94122,45.86584 C91.895304,57.109433 88.511144,68.556329 84.792319,78.987178"/>
                        <Path Fill="#FFC0935B" Stretch="Fill" Stroke="#FFC0700E" StrokeThickness="1" HorizontalAlignment="Left" Margin="72.2,36.165,0,0" VerticalAlignment="Top" Width="11.778" Height="41.745" Data="M83.47798,36.665469 C82.129989,44.546036 78.965104,52.176543 77.69489,59.797832 77.070903,63.541751 78.459208,66.986691 76.380551,70.312542 74.835096,72.78527 73.875069,75.478741 72.700402,77.409972"/>
                    </Grid>
                </ListBox>
            </Grid>
        </Border>
    </Grid>
</UserControl>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Karl Shifflett
Architect Gayle Manufacturing Company
United States United States
Karl loves .NET, WPF, WCF, ASP.NET, VB.NET and C#.
 
Awards:
 
  • December 2008 VB.NET Code Project Article Award
  • 2009 Code Project MVP
  • 2008 Code Project MVP
  • 2008 Microsoft MVP - Client App Dev
  • December 2007 VB.NET Code Project Article Award
  • Gold Medal Winner at IBM's 1998 PROIV Programming Contest in Las Vegas
Click here to check out my Blog
 
Click here to learn about Mole 2010 debugging tool for Visual Studio 2010
 
Click here to read about XAML Power Toys
 

Just a grain of sand on the worlds beaches.

Follow on   Twitter

| Advertise | Privacy | Mobile
Web04 | 2.8.140921.1 | Last Updated 28 Oct 2007
Article Copyright 2007 by Karl Shifflett
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid