Getting Started with Silverlight ColorPicker

Selection

RadColorPicker is a control that displays a set of palettes from which the user can select a single color.

In order to use RadColorPicker in your projects you have to add references to the following two assemblies

  • Telerik.Windows.Controls
  • Telerik.Windows.Controls.Input

It has a SelectedColor property, which is of Color type and it is used to store selected color value.

Example 1

<telerik:RadColorPicker SelectedColor="Red" /> 

Example 2

RadColorPicker colorPicker = new RadColorPicker(); 
colorPicker.SelectedColor = Colors.Red; 
Dim colorPicker As New RadColorPicker() 
colorPicker.SelectedColor = Colors.Red 

Whenever a color is selected the SelectedColorChanged event is raised:

Example 3

colorPicker.SelectedColorChanged += new EventHandler(RadColorPicker_SelectedColorChanged1); 
 
void RadColorPicker_SelectedColorChanged1(object sender, EventArgs e) 
{ 
   RadColorPicker colorPicker = sender as RadColorPicker; 
   Color selectedColor = colorPicker.SelectedColor; 
} 
colorPicker.SelectedColorChanged += New EventHandler(RadColorPicker_SelectedColorChanged) 
 
Private Sub RadColorPicker_SelectedColorChanged(ByVal sender As Object, ByVal e As EventArgs) 
    Dim colorPicker As RadColorPicker = TryCast(sender, RadColorPicker) 
    Dim selectedColor As Color = colorPicker.SelectedColor 
End Sub 

Populating

You can populate the RadColorSelector with any of the built-in palettes using the ColorPreset enum . It has HeaderPalette, MainPalette and StandardPalette properties, which represent the corresponding parts of the selector.

  • MainPalette property:

    Example 4

        <telerik:RadColorPicker MainPalette="Grayscale" /> 
    

    Example 4

        RadColorPicker colorPicker = new RadColorPicker(); 
        colorPicker.MainPalette = ColorPreset.Grayscale; 
    
        Dim colorPicker As New RadColorPicker() 
        colorPicker.MainPalette = ColorPreset.Grayscale 
    
  • HeaderPalette property:

    Example 6

        <telerik:RadColorPicker HeaderPalette="Office" /> 
    

    Example 7

        RadColorPicker colorPicker = new RadColorPicker(); 
        colorPicker.HeaderPalette = ColorPreset.Office; 
    
        Dim colorPicker As New RadColorPicker() 
        colorPicker.HeaderPalette = ColorPreset.Office 
    
  • StandardPalette property:

    Example 8

        <telerik:RadColorPicker StandardPalette="Standard" /> 
    

    Example 9

        RadColorPicker colorPicker = new RadColorPicker(); 
        colorPicker.StandardPalette = ColorPreset.Standard; 
    
        Dim colorPicker As New RadColorPicker() 
        colorPicker.StandardPalette = ColorPreset.Standard 
    

If you prefer to use your own collection of Colors you can always use HeaderPaletteItemsSource, MainPaletteItemsSource and StandardPaletteItemsSource.

  • StandardPaletteItemSource property

    Example 10

        <telerik:RadColorPicker StandardPaletteItemsSource="{Binding Source={StaticResource ColorList}}" /> 
    

    Example 11

        RadColorPicker colorPicker = new RadColorPicker(); 
        colorPicker.StandardPaletteVisibility = Visibility.Visible; 
        Collection<Color> colors = new Collection<Color>(); 
        colors.Add(Colors.Red); 
        colors.Add(Colors.Green); 
        colors.Add(Colors.Blue); 
        colorPicker.StandardPaletteItemsSource = colors; 
    
        Dim colorPicker As New RadColorPicker() 
        colorPicker.StandardPaletteVisibility = Visibility.Visible 
        Dim colors1 As New Collection(Of Color)() 
        colors1.Add(Colors.Red) 
        colors1.Add(Colors.Green) 
        colors1.Add(Colors.Blue) 
        colorPicker.StandardPaletteItemsSource = colors1 
    
  • HeaderPaletteItemSource property

    Example 12

        <telerik:RadColorPicker HeaderPaletteItemsSource="{Binding Source={StaticResource ColorList}}" /> 
    

    Example 13

        RadColorPicker colorPicker = new RadColorPicker(); 
        colorPicker.HeaderPaletteVisibility = Visibility.Visible; 
        Collection<Color> colors = new Collection<Color>(); 
        colors.Add(Colors.Red); 
        colors.Add(Colors.Green); 
        colors.Add(Colors.Blue); 
        colorPicker.HeaderPaletteItemsSource = colors; 
    
        Dim colorPicker As New RadColorPicker() 
        colorPicker.HeaderPaletteVisibility = Visibility.Visible 
        Dim colors1 As New Collection(Of Color)() 
        colors1.Add(Colors.Red) 
        colors1.Add(Colors.Green) 
        colors1.Add(Colors.Blue) 
        colorPicker.HeaderPaletteItemsSource = colors1 
    
  • MainPaletteItemSource property

    Example 14

        <telerik:RadColorPicker MainPaletteItemsSource="{Binding Source={StaticResource ColorList}}" /> 
    

    Example 15

        RadColorPicker colorPicker = new RadColorPicker(); 
        Collection<Color> colors = new Collection<Color>(); 
        colors.Add(Colors.Red); 
        colors.Add(Colors.Green); 
        colors.Add(Colors.Blue); 
        colorPicker.MainPaletteItemsSource = colors; 
    
        Dim colorPicker As New RadColorPicker() 
        Dim colors1 As New Collection(Of Color)() 
        colors1.Add(Colors.Red) 
        colors1.Add(Colors.Green) 
        colors1.Add(Colors.Blue) 
        colorPicker.MainPaletteItemsSource = colors1 
    

Events

  • SelectedColorChanged RadColorPicker has SelectedColor property which is of Color type and is used to store selected color value. Whenever a color is selected SelectedColorChanged event is raised.

  • DropDownClosed Raised when the SplitButton is closed.

  • DropDownOpening Raised when the SplitButton is about to be opened.

  • DropDownOpened Raised when the SplitButton is opened.

  • Click Raised when the left part of the SplitButton is clicked.

Properties

  • IsDropDownOpen - Opens or closes the drop down content.

  • DropDownPlacement - Sets the DropDownPlacement of the drop down content

  • ContentTemplate - Should be used to define the custom Content of the RadColorPicker. Content property should not be used for this purpose

  • PaletteItemsTemplate - Should be used in MVVM scenarios to get or set the ContentTemplate of the RadColorPaletteViewItems from the MainPalette, HeaderPalette, StandartPalette. It is not applied to RecentPalette items.

  • ColorPropertyPath - the control uses this path to find the property of type System.Windows.Media.Color in the DataContext of the RadColorPaletteViewItems. The behavior of this property mimics the behavior of the ItemsControl.DisplayMemberPath property.

  • SelectedItem - should be used in MVVM scenarios and it holds the selected ViewModel - the DataContext of the selected RadColorPaletteViewItem.

  • IsRecentColorsActive - defines wether a customized color, not existing in the MainPalette, HeaderPalette, StandartPalette or RecentPalette should be added in the RecentColorsPaletteView. If there is such a color this palette will be visible.

  • AdditionalContent - can be used to add customized content under RadColorPicker control.

Setting a Theme

The controls from our suite support different themes. You can see how to apply a theme different than the default one in the Setting a Theme help article.

Changing the theme using implicit styles will affect all controls that have styles defined in the merged resource dictionaries. This is applicable only for the controls in the scope in which the resources are merged.

To change the theme, you can follow the steps below:

  • Choose between the themes and add reference to the corresponding theme assembly (ex: Telerik.Windows.Themes.Windows8.dll). You can see the different themes applied in the Theming examples from our Silverlight Controls Examples application.

  • Merge the ResourceDictionaries with the namespace required for the controls that you are using from the theme assembly. For the RadColorPicker, you will need to merge the following resources:

    • Telerik.Windows.Controls
    • Telerik.Windows.Controls.Input

Example 16 demonstrates how to merge the ResourceDictionaries so that they are applied globally for the entire application.

Example 16: Merge the ResourceDictionaries

<Application.Resources> 
    <ResourceDictionary> 
        <ResourceDictionary.MergedDictionaries> 
            <ResourceDictionary Source="/Telerik.Windows.Themes.Windows8;component/Themes/System.Windows.xaml"/> 
            <ResourceDictionary Source="/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.xaml"/> 
            <ResourceDictionary Source="/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.Input.xaml"/> 
        </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Alternatively, you can use the theme of the control via the StyleManager.

Figure 1 shows a RadColorPicker with the Windows8 theme applied.

Figure 1: RadColorPicker with the Windows8 theme

RadColorPicker with Windows8 theme

In this article