ColorPicker
in namespace DotVVM.BusinessPack.Controls
Renders a control that allows the users to select a color from a palette.
Usage & Scenarios
Allows the user to pick a color using a color palette.
Sample 1: Basic Usage
The SelectedRgbaColor property should be bound to an object of type RgbaColor with the Red, Green, Blue and Alpha properties.
The Red, Green and Blue properties are byte (0 - 255), the Alpha property is double (0 - 1).
The Placeholder property specifies a watermark text which is displayed when no color is selected.
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
Placeholder="Select color" />
<p>R: {{value: Color.Red}}, G: {{value: Color.Green}}, B: {{value: Color.Blue}}, A: {{value: Color.Alpha}}</p>
using DotVVM.BusinessPack;
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample1
{
public class ViewModel : DotvvmViewModelBase
{
public RgbaColor Color { get; set; } = new RgbaColor(0, 0, 0, 1);
}
}
Sample 2: Predefined Colors
The PredefinedColors property can be bound to a collection of colors that display under the color scale and can be easily selected by the user.
Using the AllowCustomColors property, you can turn the standard color scale off and keep only the list of predefined colors.
<p>Custom and predefined colors</p>
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
PredefinedColors="{value: MyColors}"
Placeholder="Select color" />
<br />
<p>Only predefined colors</p>
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
PredefinedColors="{value: MyColors}"
AllowCustomColors="false"
Placeholder="Select color" />
using System.Collections.Generic;
using DotVVM.BusinessPack;
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample2
{
public class ViewModel : DotvvmViewModelBase
{
public RgbaColor Color { get; set; } = new RgbaColor(0, 0, 0, 1);
public List<string> MyColors { get; set; } = new List<string> {
"#FFFFFF", "#000", "C00000", "#E6E6E6", "44546A", "447260",
"ED7D31", "FFC000", "5B9BD5", "70AD47", "#FF0000"
};
}
}
Sample 3: Alpha Channel
The AllowAlphaChannel property can be used to display an additional slider with the alpha values. The user can then select also the Alpha channel of the color.
The default value is false.
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
AllowAlphaChannel="true"
Placeholder="Select color" />
<p>R: {{value: Color.Red}}, G: {{value: Color.Green}}, B: {{value: Color.Blue}}, A: {{value: Color.Alpha}}</p>
using DotVVM.BusinessPack;
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample3
{
public class ViewModel : DotvvmViewModelBase
{
public RgbaColor Color { get; set; } = new RgbaColor(0, 0, 0, 1);
}
}
Sample 4: Changed Event
The Changed event can be used to trigger a command in the viewmodel whenever the control value changes.
The RgbaColor object contains the ToHexColor and the ToCssColor which can be used to generate the values in hex (#112233) or CSS format (rgba(10, 20, 30, 1)).
There are also the TryParseHexColor and ParseHexColor methods that can be used to transform the hex string representation of the color back to the RgbaColor object.
<p style="{value: "color: " + CssColor}">Custom colored text</p>
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
Changed="{command: ColorChanged()}"
Placeholder="Select color" />
using DotVVM.BusinessPack;
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample4
{
public class ViewModel : DotvvmViewModelBase
{
public RgbaColor Color { get; set; } = new RgbaColor(0, 0, 0, 1);
public string CssColor { get; set; }
public void ColorChanged()
{
if( Color != null )
{
CssColor = Color.ToHexColor();
}
}
}
}
Sample 5: Customizing Icons
The icons used by the control can be customized using the following inner elements:
ToggleIconrepresents an icon that opens the popup with color scale and predefined colors. The default isPaletteicon.UnselectIconrepresents an icon that allows the user to deselect the color. The default isCloseicon.EditorSwitchIconrepresents an icon that allows the user to switch between the RGB editor fields and one text field with the hex representation of the color. The default isSwitchicon.
See the Icon documentation to find about using other icon packs.
<bp:ColorPicker SelectedRgbaColor="{value: Color}"
Placeholder="Select color" >
<ToggleIcon>
<bp:Icon Icon="Pallete"></bp:Icon>
</ToggleIcon>
<UnselectIcon>
<bp:Icon Icon="Close"></bp:Icon>
</UnselectIcon>
<EditorSwitchIcon>
<bp:Icon Icon="Switch"></bp:Icon>
</EditorSwitchIcon>
</bp:ColorPicker>
using DotVVM.BusinessPack;
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample5
{
public class ViewModel : DotvvmViewModelBase
{
public RgbaColor Color { get; set; } = new RgbaColor(0, 0, 0, 1);
}
}
Sample 6: HEX Colors
If you prefer to work with HEX colors, use the SelectedColor property instead of the SelectedRgbaColor property. We support #RGB and #RRGGBB color formats (the # is optional).
When the AllowAlphaChannel property is set to true, you can also use #RGBA HEX colors.
<bp:ColorPicker SelectedColor="{value: Color}"
Placeholder="Select color" />
<p>Color: {{value: Color}}</p>
using DotVVM.BusinessPack.Controls;
using DotVVM.Framework.ViewModel;
namespace DotvvmWeb.Views.Docs.Controls.businesspack.ColorPicker.sample6
{
public class ViewModel : DotvvmViewModelBase
{
public string Color { get; set; } = "#000";
}
}
Properties
| Name | Type | Description | Notes | Default Value | |
|---|---|---|---|---|---|
| AllowAlphaChannel | Boolean | Gets or sets whether translucent colors (with Alpha channel value lower than 1) can be selected. The default value is false. |
attribute
static value
|
False | |
| AllowCustomColors | Boolean | Gets or sets whether colors other than PredefinedColors can be selected. The default value is true. |
attribute
static value
|
True | |
| AllowUnselect | Boolean | Gets or sets whether the selected color can be unselected. The default value is true. |
attribute
static value
bindable
|
True | |
| Appearance | ColorPickerAppearance | Gets or sets the picker appearance on page (either popup or inline). |
attribute
static value
bindable
|
Popup | |
| AutoFocus | Boolean | Gets or sets whether the control should have focus when page loads or when a dialog is opened. The default value is false. |
attribute
static value
|
False | |
| ClientIDMode | ClientIDMode | Gets or sets the client ID generation algorithm. |
attribute
static value
|
Static | |
| DataContext | Object | Gets or sets a data context for the control and its children. All value and command bindings are evaluated in context of this value. The DataContext is null in client-side templates. |
attribute
bindable
|
null | |
| EditorSwitchIcon | IconBase | Gets or sets the icon displayed on the button switching RGBA and HEX editors. |
inner element
static value
bindable
|
null | |
| Enabled | Boolean | Gets or sets a value indicating whether the control is enabled and can be modified. |
attribute
static value
bindable
|
True | |
| ID | String | Gets or sets the control client ID within its naming container. |
attribute
static value
bindable
|
null | |
| IncludeInPage | Boolean | Gets or sets whether the control is included in the DOM of the page. |
attribute
bindable
|
True | |
| Placeholder | String | Gets or sets the text displayed when color is not selected. |
attribute
static value
|
null | |
| PredefinedColors | IEnumerable<String> | Gets or sets an enumeration of predefined HEX colors the user can select from. |
attribute
bindable
|
null | |
| SelectedColor | String | Gets or sets the HEX color selected by user. |
attribute
bindable
|
null | |
| SelectedRgbaColor | RgbaColor | Gets or sets the RGBA color selected by user. |
attribute
bindable
|
null | |
| TabIndex | Int32 | Gets or sets the order in which the control is reachable in sequential keyboard navigation. The default value is 0 which means the document order. |
attribute
static value
bindable
|
0 | |
| ToggleIcon | IconBase | Gets or sets the icon displayed on the toggle button. |
inner element
static value
bindable
|
null | |
| UnselectIcon | IconBase | Gets or sets the icon displayed on the unselect button. |
inner element
static value
bindable
|
null | |
| Visible | Boolean |
attribute
bindable
|
True |
Events
| Name | Type | Description | |
|---|---|---|---|
| Changed | Command | Gets or sets the command triggered when the value is changed. |