syncfusion-winui-color-picker
Implementing Syncfusion WinUI Color Picker (SfColorPicker)
When to Use This Skill
Use this skill immediately when the user:
- Needs to implement a color picker UI in a WinUI application
- Wants to select solid colors with multiple color models (RGB, HSV, HSL, CMYK)
- Requires gradient brush creation (linear or radial)
- Needs to customize the color spectrum shape (box or ring)
- Wants to provide color editing with alpha/opacity control
- Needs to switch between solid and gradient brush modes
- Requires hexadecimal color input/output
- Wants to handle color selection change events
- Needs to customize color channel input options (sliders, text inputs)
- Requires programmatic color brush selection
This skill is specifically for the Syncfusion WinUI Color Picker (SfColorPicker) control, not generic color picking solutions.
Component Overview
The SfColorPicker is a WinUI control for selecting and adjusting color values. It supports:
- Solid Colors: RGB, HSV, HSL, CMYK color models with hexadecimal editor
- Gradient Brushes: Linear and radial gradient color brushes with multiple stops
- Color Spectrum: Interactive color selection with box or ring shape
- Opacity Control: Alpha channel adjustment via sliders and text inputs
- Mode Switching: Dynamic switching between solid and gradient modes
- Event Notifications: Real-time color selection change events
Key Namespace:
using Syncfusion.UI.Xaml.Editors;
NuGet Package:
Syncfusion.Editors.WinUI
Documentation and Navigation Guide
Getting Started with SfColorPicker
π Read: references/getting-started.md
Read this reference when you need:
- Installation and NuGet package setup instructions
- Basic
SfColorPickercontrol implementation - Namespace and assembly references
- First working XAML + C# example with event handling
- Understanding the control structure and troubleshooting setup issues
Topics covered:
- Creating a WinUI 3 desktop application
- Adding
Syncfusion.Editors.WinUINuGet package - Importing the control namespace
- Basic XAML and C# initialization
- Control structure overview
- Common initial configurations
Solid Color Selection
π Read: references/solid-color-selection.md
Read this reference when you need:
- Selecting solid color brushes programmatically or interactively
- Working with different color models (RGB, HSV, HSL, CMYK)
- Switching between color channels at runtime
- Implementing hexadecimal color input/output
- Controlling opacity/alpha values
- Customizing color channel input options (sliders vs text)
- Handling solid color selection change events
Topics covered:
SelectedBrushproperty for programmatic and interactive selectionColorChannelOptions(RGB, HSV, HSL, CMYK) with usage examplesBrushTypeOptionsto restrict solid-only modeAlphaInputOptionsfor opacity control (All, TextInput, SliderInput)IsHexInputVisiblefor hexadecimal editor visibilityColorChannelInputOptions(TextInput, SliderInput, All)ColorEditorsVisibilityMode(Inline, Expandable, Collapsed)SelectedBrushChangedevent handling
Gradient Color Selection
π Read: references/gradient-color-selection.md
Read this reference when you need:
- Creating linear gradient brushes with multiple color stops
- Creating radial gradient brushes with gradient origin and center
- Programmatic gradient brush configuration
- Interactive gradient editing at runtime
- Adjusting gradient angles and directions
- Modifying gradient offsets (start/end points, radius)
- Controlling gradient opacity
- Handling gradient color change events
Topics covered:
LinearGradientBrushwithGradientStop,StartPoint,EndPointRadialGradientBrushwithGradientOrigin,Center,RadiusX,RadiusY- Interactive gradient creation with
BrushTypeOptions AxisInputOptionβ Simple (angle/direction) vs Advanced (precise editors)- Adding, removing, and reordering gradient stops
- Gradient opacity control
SelectedBrushChangedevent for gradient brushes
UI Customization and Modes
π Read: references/ui-customization.md
Read this reference when you need:
- Switching between solid, linear, and radial brush modes
- Enabling or restricting specific brush types
- Changing color spectrum shapes (box vs ring)
- Customizing color spectrum components (hue, saturation, value)
- Understanding
BrushTypeOptionscombinations - Runtime brush mode switching behavior
Topics covered:
BrushTypeOptionsconfigurations (SolidColorBrush, LinearGradientBrush, RadialGradientBrush, All)- Interactive brush mode dropdown behavior
ColorSpectrumShape(Box vs Ring) with when-to-use guidanceColorSpectrumComponents(SaturationValue, HueSaturation, HueValue, etc.)- Common customization patterns for different app types
Best Practices and Troubleshooting
π Read: references/best-practices.md
Read this reference when you need:
- Guidance on when to use solid vs gradient colors
- Performance optimization tips for gradients
- Common use case implementation patterns
- Troubleshooting color selection or rendering issues
- Accessibility considerations
- Integration patterns (flyout, dialog, property panel)
Topics covered:
- Solid vs gradient decision matrix
- Performance tips: gradient stop limits, caching brushes, debouncing events
- Common use cases: theme picker, drawing tool, text highlighter, background editor
- Flyout, dialog, and property panel integration patterns
- Common mistakes (brush type mismatch, missing null checks)
- Accessibility: keyboard navigation, ARIA attributes, screen reader support
Quick Start Example
XAML
<Page
x:Class="ColorPickerApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:editors="using:Syncfusion.UI.Xaml.Editors">
<Grid>
<editors:SfColorPicker
x:Name="colorPicker"
SelectedBrush="Blue"
BrushTypeOptions="All"
SelectedBrushChanged="ColorPicker_SelectedBrushChanged" />
</Grid>
</Page>
C# Code-Behind
using Syncfusion.UI.Xaml.Editors;
using Microsoft.UI.Xaml.Media;
private void ColorPicker_SelectedBrushChanged(object sender, SelectedBrushChangedEventArgs args)
{
if (args?.NewBrush is SolidColorBrush solidBrush)
{
var color = solidBrush.Color; // Access R, G, B, A
}
else if (args?.NewBrush is LinearGradientBrush linearBrush)
{
var stops = linearBrush.GradientStops;
}
else if (args?.NewBrush is RadialGradientBrush radialBrush)
{
var stops = radialBrush.GradientStops;
}
}
Common Patterns
Pattern 1: Solid Color Picker Only
<editors:SfColorPicker
BrushTypeOptions="SolidColorBrush"
ColorChannelOptions="RGB"
IsHexInputVisible="True" />
Pattern 2: Gradient Editor Only
<editors:SfColorPicker
BrushTypeOptions="LinearGradientBrush,RadialGradientBrush"
AxisInputOption="Simple" />
Pattern 3: Programmatic Color Selection
// Solid color
colorPicker.SelectedBrush = new SolidColorBrush(Colors.Red);
// Linear gradient
var linearGradient = new LinearGradientBrush();
linearGradient.StartPoint = new Point(0, 0);
linearGradient.EndPoint = new Point(1, 1);
linearGradient.GradientStops.Add(new GradientStop() { Color = Colors.Yellow, Offset = 0.0 });
linearGradient.GradientStops.Add(new GradientStop() { Color = Colors.Red, Offset = 1.0 });
colorPicker.SelectedBrush = linearGradient;
Pattern 4: Custom Spectrum Shape
<editors:SfColorPicker
ColorSpectrumShape="Ring"
ColorSpectrumComponents="HueSaturation" />
Key Properties Reference
| Property | Type | Default | Purpose |
|---|---|---|---|
SelectedBrush |
Brush | Blue | Gets/sets the selected color brush |
BrushTypeOptions |
BrushTypeOptions | All | Enables specific brush modes (Solid, Linear, Radial) |
ColorChannelOptions |
ColorChannelOptions | RGB | Sets color model (RGB, HSV, HSL, CMYK) |
ColorSpectrumShape |
ColorSpectrumShape | Box | Sets spectrum shape (Box or Ring) |
ColorSpectrumComponents |
ColorSpectrumComponents | SaturationValue | Defines spectrum axes |
AlphaInputOptions |
ColorInputOptions | All | Controls alpha/opacity input visibility |
IsHexInputVisible |
bool | true | Shows/hides hexadecimal editor |
ColorChannelInputOptions |
ColorInputOptions | All | Controls channel input type (Slider/Text/All) |
ColorEditorsVisibilityMode |
ColorEditorsVisibilityMode | Inline | Sets editor visibility (Inline/Expandable/Collapsed) |
AxisInputOption |
AxisInputOption | Simple | Controls gradient axis input complexity |
Key Events
| Event | Args | Purpose |
|---|---|---|
SelectedBrushChanged |
SelectedBrushChangedEventArgs | Fired when selected brush changes |
Event Args: OldBrush (previous selection) Β· NewBrush (new selection)
Common Use Cases
- Theme Color Selector β Let users customize app theme colors
- Drawing Tool β Color selection for graphic/drawing applications
- Style Editor β UI element color customization in design tools
- Gradient Background Editor β Create gradient backgrounds or visual effects
- Color Palette Manager β Manage color palettes in creative applications