Getting Started with WPF ColorPicker
Assembly References
To use the RadColorPicker in your projects you have to add references to the following assemblies:
- Telerik.Windows.Controls
- Telerik.Windows.Controls.Input
You can find the required assemblies for each control from the suite in the Controls Dependencies help article.
Adding Telerik Assemblies Using NuGet
To use RadColorPicker when working with NuGet packages, install the Telerik.Windows.Controls.Input.for.Wpf.Xaml
package. The package name may vary slightly based on the Telerik dlls set - Xaml or NoXaml
Read more about NuGet installation in the Installing UI for WPF from NuGet Package article.
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 WPF 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
Telerik UI for WPF Learning Resources
- Telerik UI for WPF ColorPicker Component
- Getting Started with Telerik UI for WPF Components
- Telerik UI for WPF Installation
- Telerik UI for WPF and WinForms Integration
- Telerik UI for WPF Visual Studio Templates
- Setting a Theme with Telerik UI for WPF
- Telerik UI for WPF Virtual Classroom (Training Courses for Registered Users)
- Telerik UI for WPF License Agreement