Click here to Skip to main content
15,896,726 members
Articles / Desktop Programming / WPF

WPF Color Picker Like Office 2007

Rate me:
Please Sign up or sign in to vote.
4.89/5 (61 votes)
17 Jan 2010CPOL3 min read 128.9K   7.4K   57  
A simple to use Color Picker with advanced color palette for WPF Applications with look and feel of Office 2007 color picker
<UserControl x:Class="CustomWPFColorPicker.AdvancedColorPickerDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    Height="Auto" Width="Auto">
    <UserControl.Resources>
        <!--Picker Resources-->
        <LinearGradientBrush x:Key="BrightnessGradient" StartPoint="0,1" EndPoint="0,0" 
        ColorInterpolationMode="ScRgbLinearInterpolation">
            <GradientStop Offset="0" Color="sc# 1, 0,0,0" />
            <GradientStop Offset="0.5" Color="sc# 1, 0.5,0.5,0.5" />
            <GradientStop Offset="1" Color="sc# 1, 1,1,1" />
        </LinearGradientBrush>
        <SolidColorBrush x:Key="HorizontalSliderTrackNormalBackground" Color="#FFF0EDE0"/>
        <LinearGradientBrush x:Key="HorizontalSliderTrackNormalBorder" EndPoint="0,1" StartPoint="0,0">
            <GradientStop Color="#FFAEB1AF" Offset="0.1"/>
            <GradientStop Color="White" Offset=".9"/>
        </LinearGradientBrush>
        <Style x:Key="SliderRepeatButtonStyle" TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="IsTabStop" Value="false"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Border Background="Transparent"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <SolidColorBrush x:Key="SliderThumbBackground" Color="#F3F3EF"/>
        <Geometry x:Key="SliderThumbOuterBorderGeometry">M 5,-9 A 1.5 1.5 0 0 0 3.5,-10.5 L -3.5,-10.5 A 1.5 1.5 0 0 0 -5,-9 L -5,9 A 1.5 1.5 0 0 0 -3.5,10.5 L 3.5,10.5 A 1.5 1.5 0 0 0 5,9 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccent" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#70D66F" Offset="0"/>
            <GradientStop Color="#46CA44" Offset="1"/>
        </LinearGradientBrush>
        <Geometry x:Key="SliderThumbTopAccentGeometry">M 4.5,-8 L 4.5,-10 L -4.5,-10 L -4.5,-8 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBottomAccent" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#46CA44" Offset="0"/>
            <GradientStop Color="#1B9B1A" Offset=".8"/>
        </LinearGradientBrush>
        <Geometry x:Key="SliderThumbBottomAccentGeometry">M 4.5,8 L 4.5,10 L -4.5,10 L -4.5,8 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbShadeGradient" EndPoint="1,0" StartPoint="0,0">
            <GradientStop Color="#40FFFFFF" Offset="0"/>
            <GradientStop Color="#00FFFFFF" Offset=".3"/>
            <GradientStop Color="#00000000" Offset=".7"/>
            <GradientStop Color="#40000000" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBorder" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FFBECBD3" Offset="0"/>
            <GradientStop Color="#FF72838D" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccentHover" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FBCE7C" Offset="0"/>
            <GradientStop Color="#F7B335" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBottomAccentHover" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FAC055" Offset="0"/>
            <GradientStop Color="#C7902A" Offset=".8"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccentPressed" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#70BA66" Offset="0"/>
            <GradientStop Color="#229412" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBottomAccentPressed" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#46A638" Offset="0"/>
            <GradientStop Color="#1B770E" Offset=".8"/>
        </LinearGradientBrush>
        <Style x:Key="HorizontalSliderThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Height" Value="22"/>
            <Setter Property="Width" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TranslateTransform X="5.5" Y="11"/>
                            </Canvas.RenderTransform>
                            <Path x:Name="Background" Fill="{StaticResource SliderThumbBackground}" Data="{StaticResource SliderThumbOuterBorderGeometry}"/>
                            <Path x:Name="TopAccent" Fill="{StaticResource HorizontalSliderThumbTopAccent}" StrokeThickness="1" Data="{StaticResource SliderThumbTopAccentGeometry}"/>
                            <Path x:Name="BottomAccent" Fill="{StaticResource HorizontalSliderThumbBottomAccent}" StrokeThickness="1" Data="{StaticResource SliderThumbBottomAccentGeometry}"/>
                            <Path x:Name="OuterBorder" Fill="{StaticResource HorizontalSliderThumbShadeGradient}" Stroke="{StaticResource HorizontalSliderThumbBorder}" StrokeThickness="1" Data="{StaticResource SliderThumbOuterBorderGeometry}"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="Foreground" Value="Orange">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="IsDragging" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentPressed}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentPressed}"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Fill" TargetName="Background" Value="#FFF5F4EA"/>
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                                <Setter Property="Fill" TargetName="TopAccent" Value="#FFD2D0C6"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="#FFBCBAAE"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <SolidColorBrush x:Key="SliderThumbBackgroundInverted" Color="#F3F3EF"/>
        <Geometry x:Key="SliderPointedThumbOuterBorderGeometry">M 5,-8 A 1.5 1.5 0 0 0 3.5,-9.5 L -3.5,-9.5 A 1.5 1.5 0 0 0 -5,-8 L -5,5.5 L 0,10.5 L 5,5.5 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccentInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#46CA44" Offset="1"/>
            <GradientStop Color="#1B9B1A" Offset="0"/>
        </LinearGradientBrush>
        <Geometry x:Key="SliderPointedThumbTopAccentGeometry">M 4.5,-6 L 4.5,-9 L -4.5,-9 L -4.5,-6 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBottomAccentInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#70D66F" Offset="1"/>
            <GradientStop Color="#46CA44" Offset=".2"/>
        </LinearGradientBrush>
        <Geometry x:Key="SliderPointedThumbBottomAccentGeometry">M 4.5,4 L 0,8.5 L -4.5,4 L -4.5,5 L 0,10 L 4.5,5 Z</Geometry>
        <LinearGradientBrush x:Key="HorizontalSliderThumbShadeGradientInverted" EndPoint="1,0" StartPoint="0,0">
            <GradientStop Color="#40FFFFFF" Offset="1"/>
            <GradientStop Color="#00FFFFFF" Offset=".7"/>
            <GradientStop Color="#00000000" Offset=".3"/>
            <GradientStop Color="#40000000" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBorderInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FFBECBD3" Offset="1"/>
            <GradientStop Color="#FF72838D" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccentHoverInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FAC055" Offset="1"/>
            <GradientStop Color="#C7902A" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbBottomAccentHoverInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#FBCE7C" Offset="1"/>
            <GradientStop Color="#F7B335" Offset=".2"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="HorizontalSliderThumbTopAccentPressedInverted" EndPoint="1,1" StartPoint="0,0">
            <GradientStop Color="#46A638" Offset="1"/>
            <GradientStop Color="#1B770E" Offset="0"/>
        </LinearGradientBrush>
        <Style x:Key="HorizontalSliderUpThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Height" Value="22"/>
            <Setter Property="Width" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TransformGroup>
                                    <TransformGroup.Children>
                                        <TransformCollection>
                                            <RotateTransform Angle="180"/>
                                            <TranslateTransform X="5.5" Y="11"/>
                                        </TransformCollection>
                                    </TransformGroup.Children>
                                </TransformGroup>
                            </Canvas.RenderTransform>
                            <Path x:Name="Background" Fill="{StaticResource SliderThumbBackgroundInverted}" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                            <Path x:Name="TopAccent" Fill="{StaticResource HorizontalSliderThumbTopAccentInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbTopAccentGeometry}"/>
                            <Path x:Name="BottomAccent" Fill="{StaticResource HorizontalSliderThumbBottomAccentInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbBottomAccentGeometry}"/>
                            <Path x:Name="OuterBorder" Fill="{StaticResource HorizontalSliderThumbShadeGradientInverted}" Stroke="{StaticResource HorizontalSliderThumbBorderInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHoverInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHoverInverted}"/>
                            </Trigger>
                            <Trigger Property="Foreground" Value="Orange">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHoverInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHoverInverted}"/>
                            </Trigger>
                            <Trigger Property="IsDragging" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentPressedInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbTopAccentPressedInverted}"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Fill" TargetName="Background" Value="#FFF5F4EA"/>
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                                <Setter Property="Fill" TargetName="TopAccent" Value="#BBB9AD"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="Transparent"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="HorizontalSliderDownThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Height" Value="22"/>
            <Setter Property="Width" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TranslateTransform X="5.5" Y="11"/>
                            </Canvas.RenderTransform>
                            <Path x:Name="Background" Fill="{StaticResource SliderThumbBackground}" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                            <Path x:Name="TopAccent" Fill="{StaticResource HorizontalSliderThumbTopAccent}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbTopAccentGeometry}"/>
                            <Path x:Name="BottomAccent" Fill="{StaticResource HorizontalSliderThumbBottomAccent}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbBottomAccentGeometry}"/>
                            <Path x:Name="OuterBorder" Fill="{StaticResource HorizontalSliderThumbShadeGradient}" Stroke="{StaticResource HorizontalSliderThumbBorder}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="Foreground" Value="Orange">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="IsDragging" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource HorizontalSliderThumbTopAccentPressed}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource HorizontalSliderThumbBottomAccentPressed}"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Fill" TargetName="Background" Value="#FFF5F4EA"/>
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                                <Setter Property="Fill" TargetName="TopAccent" Value="#FFD2D0C6"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="Transparent"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <SolidColorBrush x:Key="VerticalSliderTrackNormalBackground" Color="#FFF0EDE0"/>
        <LinearGradientBrush x:Key="VerticalSliderTrackNormalBorder" EndPoint="1,0" StartPoint="0,0">
            <GradientStop Color="#FFAEB1AF" Offset="0.1"/>
            <GradientStop Color="White" Offset=".9"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccent" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#70D66F" Offset="0"/>
            <GradientStop Color="#46CA44" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBottomAccent" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#46CA44" Offset="0"/>
            <GradientStop Color="#1B9B1A" Offset=".8"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbShadeGradient" EndPoint="0,0" StartPoint="1,0">
            <GradientStop Color="#40FFFFFF" Offset="0"/>
            <GradientStop Color="#00FFFFFF" Offset=".3"/>
            <GradientStop Color="#00000000" Offset=".7"/>
            <GradientStop Color="#40000000" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBorder" EndPoint="0,.5" StartPoint="1,0">
            <GradientStop Color="#FFBECBD3" Offset="0"/>
            <GradientStop Color="#FF72838D" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccentHover" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#FBCE7C" Offset="0"/>
            <GradientStop Color="#F7B335" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBottomAccentHover" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#FAC055" Offset="0"/>
            <GradientStop Color="#C7902A" Offset=".8"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccentPressed" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#70BA66" Offset="0"/>
            <GradientStop Color="#229412" Offset="1"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBottomAccentPressed" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#46A638" Offset="0"/>
            <GradientStop Color="#1B770E" Offset=".8"/>
        </LinearGradientBrush>
        <Style x:Key="VerticalSliderThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Width" Value="22"/>
            <Setter Property="Height" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TransformGroup>
                                    <TransformGroup.Children>
                                        <TransformCollection>
                                            <RotateTransform Angle="-90"/>
                                            <TranslateTransform X="11" Y="5.5"/>
                                        </TransformCollection>
                                    </TransformGroup.Children>
                                </TransformGroup>
                            </Canvas.RenderTransform>
                            <Path Width="8.75" Height="8.792" Fill="#FFA5452A" Stretch="Fill" Stroke="#FFA5452A" Data="M9.5,-1.625 L5.4166667,-9.4157592 1.75,-1.625 z" Canvas.Left="-4.25" Canvas.Top="-10.209"/>
                            <Path HorizontalAlignment="Stretch" x:Name="OuterBorder" VerticalAlignment="Stretch" Width="9.5" Height="9.625" Fill="{StaticResource VerticalSliderThumbShadeGradient}" Stroke="{x:Null}" StrokeThickness="1" Panel.ZIndex="-1" Data="M4.5312501,6.9388954E-18 A1.5,1.5,0,0,0,4.46875,0.15624998 L4.5833334,0.083666627 A1.5,1.5,0,0,0,4.4375001,0.15625 L6.9009491E-05,9.5006667 A1.5,1.5,0,0,0,0.00024812574,9.5423334 L9.499915,9.6250697 A1.5,1.5,0,0,0,9.125,8.78125 z" Canvas.Left="-4.625" Canvas.Top="-10.75"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true"/>
                            <Trigger Property="Foreground" Value="Orange"/>
                            <Trigger Property="IsDragging" Value="true"/>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccentInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#46CA44" Offset="1"/>
            <GradientStop Color="#1B9B1A" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBottomAccentInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#70D66F" Offset="1"/>
            <GradientStop Color="#46CA44" Offset=".2"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbShadeGradientInverted" EndPoint="0,0" StartPoint="1,0">
            <GradientStop Color="#40FFFFFF" Offset="1"/>
            <GradientStop Color="#00FFFFFF" Offset=".7"/>
            <GradientStop Color="#00000000" Offset=".3"/>
            <GradientStop Color="#40000000" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBorderInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#FFBECBD3" Offset="1"/>
            <GradientStop Color="#FF72838D" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccentHoverInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#FAC055" Offset="1"/>
            <GradientStop Color="#C7902A" Offset="0"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbBottomAccentHoverInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#FBCE7C" Offset="1"/>
            <GradientStop Color="#F7B335" Offset=".2"/>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="VerticalSliderThumbTopAccentPressedInverted" EndPoint="0,1" StartPoint="1,0">
            <GradientStop Color="#46A638" Offset="1"/>
            <GradientStop Color="#1B770E" Offset="0"/>
        </LinearGradientBrush>
        <Style x:Key="VerticalSliderLeftThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Width" Value="22"/>
            <Setter Property="Height" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TransformGroup>
                                    <TransformGroup.Children>
                                        <TransformCollection>
                                            <RotateTransform Angle="90"/>
                                            <TranslateTransform X="11" Y="5.5"/>
                                        </TransformCollection>
                                    </TransformGroup.Children>
                                </TransformGroup>
                            </Canvas.RenderTransform>
                            <Path x:Name="Background" Fill="{StaticResource SliderThumbBackground}" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                            <Path x:Name="TopAccent" Fill="{StaticResource VerticalSliderThumbTopAccentInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbTopAccentGeometry}"/>
                            <Path x:Name="BottomAccent" Fill="{StaticResource VerticalSliderThumbBottomAccentInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbBottomAccentGeometry}"/>
                            <Path x:Name="OuterBorder" Fill="{StaticResource VerticalSliderThumbShadeGradientInverted}" Stroke="{StaticResource VerticalSliderThumbBorderInverted}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentHoverInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbBottomAccentHoverInverted}"/>
                            </Trigger>
                            <Trigger Property="Foreground" Value="Orange">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentHoverInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbBottomAccentHoverInverted}"/>
                            </Trigger>
                            <Trigger Property="IsDragging" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentPressedInverted}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbTopAccentPressedInverted}"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Fill" TargetName="Background" Value="#FFF5F4EA"/>
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                                <Setter Property="Fill" TargetName="TopAccent" Value="#BBB9AD"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="Transparent"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="VerticalSliderRightThumbStyle" TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Width" Value="22"/>
            <Setter Property="Height" Value="11"/>
            <Setter Property="Foreground" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Canvas SnapsToDevicePixels="true">
                            <Canvas.RenderTransform>
                                <TransformGroup>
                                    <TransformGroup.Children>
                                        <TransformCollection>
                                            <RotateTransform Angle="-90"/>
                                            <TranslateTransform X="11" Y="5.5"/>
                                        </TransformCollection>
                                    </TransformGroup.Children>
                                </TransformGroup>
                            </Canvas.RenderTransform>
                            <Path x:Name="Background" Fill="{StaticResource SliderThumbBackgroundInverted}" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                            <Path x:Name="TopAccent" Fill="{StaticResource VerticalSliderThumbTopAccent}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbTopAccentGeometry}"/>
                            <Path x:Name="BottomAccent" Fill="{StaticResource VerticalSliderThumbBottomAccent}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbBottomAccentGeometry}"/>
                            <Path x:Name="OuterBorder" Fill="{StaticResource VerticalSliderThumbShadeGradient}" Stroke="{StaticResource VerticalSliderThumbBorder}" StrokeThickness="1" Data="{StaticResource SliderPointedThumbOuterBorderGeometry}"/>
                        </Canvas>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="Foreground" Value="Orange">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentHover}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbBottomAccentHover}"/>
                            </Trigger>
                            <Trigger Property="IsDragging" Value="true">
                                <Setter Property="Fill" TargetName="TopAccent" Value="{StaticResource VerticalSliderThumbTopAccentPressed}"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="{StaticResource VerticalSliderThumbBottomAccentPressed}"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Fill" TargetName="Background" Value="#FFF5F4EA"/>
                                <Setter Property="Stroke" TargetName="OuterBorder" Value="#FFD6D4C6"/>
                                <Setter Property="Fill" TargetName="TopAccent" Value="#FFD2D0C6"/>
                                <Setter Property="Fill" TargetName="BottomAccent" Value="Transparent"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="SliderStyle" TargetType="{x:Type Slider}">
            <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Foreground" Value="#FFA1A192"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Slider}">
                        <Border SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                                <TickBar Visibility="Collapsed" x:Name="TopTick" Height="4" Grid.Row="0" Fill="{TemplateBinding Foreground}" Placement="Top"/>
                                <TickBar Visibility="Collapsed" x:Name="BottomTick" Height="4" Grid.Row="2" Fill="{TemplateBinding Foreground}" Placement="Bottom"/>
                                <Border Margin="5,0" VerticalAlignment="Center" Height="4.0" Grid.Row="1" Background="{StaticResource HorizontalSliderTrackNormalBackground}" BorderBrush="{StaticResource HorizontalSliderTrackNormalBorder}" BorderThickness="1" CornerRadius="1">
                                    <Canvas Margin="-6,-1">
                                        <Rectangle Visibility="Hidden" x:Name="PART_SelectionRange" Height="4.0" Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" Stroke="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" StrokeThickness="1.0"/>
                                    </Canvas>
                                </Border>
                                <Track x:Name="PART_Track" Grid.Row="1">
                                    <Track.Thumb>
                                        <Thumb x:Name="Thumb" Style="{StaticResource HorizontalSliderThumbStyle}"/>
                                    </Track.Thumb>
                                    <Track.IncreaseRepeatButton>
                                        <RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="{x:Static Slider.IncreaseLarge}"/>
                                    </Track.IncreaseRepeatButton>
                                    <Track.DecreaseRepeatButton>
                                        <RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="{x:Static Slider.DecreaseLarge}"/>
                                    </Track.DecreaseRepeatButton>
                                </Track>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="TickPlacement" Value="TopLeft">
                                <Setter Property="Visibility" TargetName="TopTick" Value="Visible"/>
                                <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HorizontalSliderUpThumbStyle}"/>
                            </Trigger>
                            <Trigger Property="TickPlacement" Value="BottomRight">
                                <Setter Property="Visibility" TargetName="BottomTick" Value="Visible"/>
                                <Setter Property="Style" TargetName="Thumb" Value="{StaticResource HorizontalSliderDownThumbStyle}"/>
                            </Trigger>
                            <Trigger Property="TickPlacement" Value="Both">
                                <Setter Property="Visibility" TargetName="TopTick" Value="Visible"/>
                                <Setter Property="Visibility" TargetName="BottomTick" Value="Visible"/>
                            </Trigger>
                            <Trigger Property="IsSelectionRangeEnabled" Value="true">
                                <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="true">
                                <Setter Property="Foreground" TargetName="Thumb" Value="Orange"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Vertical">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Slider}">
                                <Border SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Width="9">
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition MinWidth="{TemplateBinding MinWidth}" Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
                                        <TickBar Visibility="Collapsed" x:Name="LeftTick" Width="4" Grid.Column="0" Fill="{TemplateBinding Foreground}" Placement="Left"/>
                                        <TickBar Visibility="Collapsed" x:Name="RightTick" Width="4" Grid.Column="2" Fill="{TemplateBinding Foreground}" Placement="Right"/>
                                        <Border HorizontalAlignment="Right" Margin="0,0,10,0" Width="3" Grid.Column="1" Background="{StaticResource VerticalSliderTrackNormalBackground}" BorderBrush="{StaticResource VerticalSliderTrackNormalBorder}" BorderThickness="1" CornerRadius="1" RenderTransformOrigin="0.5,0.5" Grid.ColumnSpan="1">
                                            <Border.RenderTransform>
                                                <TransformGroup>
                                                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                                                    <SkewTransform AngleX="0" AngleY="0"/>
                                                    <RotateTransform Angle="0"/>
                                                    <TranslateTransform X="0" Y="0"/>
                                                </TransformGroup>
                                            </Border.RenderTransform>
                                            <Canvas Margin="-1,-6">
                                                <Rectangle Visibility="Hidden" x:Name="PART_SelectionRange" Width="4.0" Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" Stroke="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" StrokeThickness="1.0"/>
                                            </Canvas>
                                        </Border>
                                        <Track x:Name="PART_Track" Grid.Column="1">
                                            <Track.Thumb>
                                                <Thumb x:Name="Thumb" Style="{StaticResource VerticalSliderThumbStyle}"/>
                                            </Track.Thumb>
                                            <Track.IncreaseRepeatButton>
                                                <RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="{x:Static Slider.IncreaseLarge}"/>
                                            </Track.IncreaseRepeatButton>
                                            <Track.DecreaseRepeatButton>
                                                <RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="{x:Static Slider.DecreaseLarge}"/>
                                            </Track.DecreaseRepeatButton>
                                        </Track>
                                    </Grid>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="TickPlacement" Value="TopLeft">
                                        <Setter Property="Visibility" TargetName="LeftTick" Value="Visible"/>
                                        <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VerticalSliderLeftThumbStyle}"/>
                                    </Trigger>
                                    <Trigger Property="TickPlacement" Value="BottomRight">
                                        <Setter Property="Visibility" TargetName="RightTick" Value="Visible"/>
                                        <Setter Property="Style" TargetName="Thumb" Value="{StaticResource VerticalSliderRightThumbStyle}"/>
                                    </Trigger>
                                    <Trigger Property="TickPlacement" Value="Both">
                                        <Setter Property="Visibility" TargetName="LeftTick" Value="Visible"/>
                                        <Setter Property="Visibility" TargetName="RightTick" Value="Visible"/>
                                    </Trigger>
                                    <Trigger Property="IsSelectionRangeEnabled" Value="true">
                                        <Setter Property="Visibility" TargetName="PART_SelectionRange" Value="Visible"/>
                                    </Trigger>
                                    <Trigger Property="IsKeyboardFocused" Value="true">
                                        <Setter Property="Foreground" TargetName="Thumb" Value="Orange"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
        <!--Dialog Resources-->
        <Style x:Key="DialogCloseButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Width" Value="20"/>
            <Setter Property="Height" Value="20"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <ContentControl>
                            <Canvas>
                                <Path StrokeThickness="1.000000" Stroke="#ff919191" StrokeMiterLimit="1.000000" Data="F1 M 18.941406,15.940430 C 18.941406,17.597656 17.597656,18.940430 15.941406,18.940430 L 3.500000,18.940430 C 1.843750,18.940430 0.500000,17.597656 0.500000,15.940430 L 0.500000,3.500000 C 0.500000,1.842773 1.843750,0.500000 3.500000,0.500000 L 15.941406,0.500000 C 17.597656,0.500000 18.941406,1.842773 18.941406,3.500000 L 18.941406,15.940430 Z">
                                    <Path.Fill>
                                        <LinearGradientBrush MappingMode="Absolute" StartPoint="399.912598,306.483398" EndPoint="399.912598,235.869263">
                                            <LinearGradientBrush.GradientStops>
                                                <GradientStop Offset="0.000000" Color="#ffffffff"/>
                                                <GradientStop Offset="1.000000" Color="#ff000000"/>
                                            </LinearGradientBrush.GradientStops>
                                            <LinearGradientBrush.Transform>
                                                <MatrixTransform Matrix="1.000000,0.000000,-0.000000,-1.000000,-390.192383,309.083008" />
                                            </LinearGradientBrush.Transform>
                                        </LinearGradientBrush>
                                    </Path.Fill>
                                </Path>
                                <Path x:Name="crossLine1" StrokeThickness="1.500000" Stroke="#ff919191" StrokeMiterLimit="1.000000" Data="F1 M 14.880859,4.563477 L 9.726563,9.718750 L 14.880859,14.873047"/>
                                <Path x:Name="crossLine2" StrokeThickness="1.500000" Stroke="#ff919191" StrokeMiterLimit="1.000000" Data="F1 M 4.560547,4.568359 L 9.714844,9.723633 L 4.560547,14.877930"/>
                            </Canvas>
                        </ContentControl>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="crossLine1" Property="Stroke" Value="#FF0000"/>
                                <Setter TargetName="crossLine2" Property="Stroke" Value="#FF0000"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="{x:Type Thumb}" TargetType="{x:Type Thumb}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="2" Background="Transparent">
                            <TextBlock Text="{TemplateBinding Tag}" Width="Auto" Foreground="Black" FontSize="12" FontFamily="Arial" FontWeight="Bold" Margin="1,0,0,0" TextAlignment="Left" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
    <StackPanel Orientation="Vertical">
        <Border Background="White" BorderThickness="1" BorderBrush="Gray" Margin="12" CornerRadius="3" x:Name="Container">
            <Border.BitmapEffect>                
                <DropShadowBitmapEffect Color="Black" Direction="320"
                  ShadowDepth="2"
                  Softness="0.5"
                  Opacity="0.5"/>
            </Border.BitmapEffect>
            <StackPanel>
                <Border Height="25" Margin="0,0,0,0" CornerRadius="7 7 0 0" Visibility="{Binding TitleBarVisibility}" Background="{DynamicResource DialogTitleBarBGBrush}">                    
                    <Grid x:Name="titlePanel">
                        <TextBlock Text="Advanced Color Palette" VerticalAlignment="Center" Margin="5,0,0,0" />
                        <Thumb x:Name="moveThumb" BorderThickness="0" HorizontalAlignment="Stretch" Tag="{Binding Title}" Cursor="ScrollAll" DragDelta="moveThumb_DragDelta"/>
                        <Button Style="{DynamicResource DialogCloseButtonStyle}" Click="Cancel_Click" HorizontalAlignment="Right" VerticalAlignment="Center" BorderThickness="0" Margin="5,0" Background="Transparent" Cursor="Hand">
                        </Button>
                    </Grid>
                </Border>
                <Rectangle Fill="#ffffff" StrokeThickness="0"  Margin="0,0,0,0" VerticalAlignment="Top" Height="1" Visibility="{Binding TitleBarVisibility}"/>
                <Rectangle Fill="#cfd8da" StrokeThickness="0"  Margin="0,0,0,0" VerticalAlignment="Top" Height="1" Visibility="{Binding TitleBarVisibility}"/>
                <Border Padding="0,0">
                    <Border Style="{DynamicResource  FrameBKPanel}" >
                        <StackPanel >
                            <Grid Background="Transparent">
                                <Border Margin="0,0,0,0" BorderThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center">
                                    <StackPanel Orientation="Vertical" Width="225" Height="Auto" Background="#FFFFFFFF" Margin="0,0,0,8" HorizontalAlignment="Center" VerticalAlignment="Center">
                                        <StackPanel Orientation="Horizontal">
                                            <Border x:Name="borderColorChart" Margin="10,10,0,0" VerticalAlignment="Top" Width="174" Height="138" >
                                                <Grid>
                                                    <Image Stretch="None" Source="colorChart.PNG" MouseDown="Image_MouseDown" MouseMove="Image_MouseMove"/>
                                                    <Ellipse x:Name="colorMarker" Width="12" Height="12" StrokeThickness="2" Stroke="Brown"/>
                                                </Grid>
                                            </Border>
                                            <Border>
                                                <StackPanel Orientation="Horizontal">
                                                    <Border x:Name="brightnessSliderBorder" Margin="8,10,0,0" Width="15" Height="138" VerticalAlignment="Top" Background="{DynamicResource BrightnessGradient}">
                                                    </Border>
                                                    <Slider x:Name="brightnessSlider" Margin="0,5,0,0" Orientation="Vertical" Width="9.5" Height="148" 
        					        IsMoveToPointEnabled="True" Focusable="False" Minimum="0.0" Maximum="1.0" HorizontalAlignment="Center" Style="{DynamicResource SliderStyle}" VerticalAlignment="Center" />
                                                </StackPanel>
                                            </Border>
                                        </StackPanel>
                                        <StackPanel Orientation="Horizontal" Height="62">
                                            <Border x:Name="currentColorBorder" HorizontalAlignment="Left" Margin="10,0,25,0" VerticalAlignment="Bottom" Width="82" Height="50" BorderThickness="2" BorderBrush="Black" Background="#FF808080"/>
                                            <StackPanel Orientation="Vertical" Width="90">
                                                <Button x:Name="OK" HorizontalAlignment="Right" Margin="20,10,0,0" VerticalAlignment="Bottom" Width="70" Height="23" Content="Ok" Click="Ok_Click" />
                                                <Button x:Name="Cancel" HorizontalAlignment="Right" Margin="20,5,0,0" VerticalAlignment="Bottom" Width="70" Height="23" Content="Cancel" Click="Cancel_Click"/>
                                            </StackPanel>
                                        </StackPanel>
                                    </StackPanel>
                                </Border>
                            </Grid>
                        </StackPanel>
                    </Border>
                </Border>
            </StackPanel>
        </Border>
    </StackPanel>
</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)


Written By
Software Developer
United Kingdom United Kingdom
Currently living and working in London. He is an enthusiastic software developer passionate about microsoft technologies, specially C#, WPF, Silverlight WCF and windows Azure. Contributes to several open source project and msdn forums.

My Blog
twitter : @sarafuddin

Comments and Discussions