CheckBox

in namespace DotVVM.BusinessPack.Controls

Renders the HTML checkbox control.

Usage & Scenarios

Inherits the built-in CheckBox control with a DotVVM Business Pack visual style.

Sample 1: Basic CheckBox

The CheckBox control has the Checked property of boolean which indicates whether the control is checked or not.

Optionally, you can use the Text property to specify the label for the checkbox. Or you can put the label contents inside the bp:CheckBox element.

<bp:CheckBox Text="CheckBox"
             Checked="{value: IsChecked}" />
using DotVVM.Framework.ViewModel;

namespace DotvvmWeb.Views.Docs.Controls.businesspack.CheckBox.sample1
{
    public class ViewModel : DotvvmViewModelBase
    {
        public bool IsChecked { get; set; }
    }
}

Sample 2: Multiple CheckBoxes

The CheckBox has also a property CheckedItems which can hold any collection. This is an alternative to the Checked property - they cannot be combined. The collection holds values of all checkboxes which are checked. The value of the checkbox which should be inserted in the collection, is defined in the CheckedValue property.

The first two checkboxes will be checked by default because the collection holds initial values "r" and "g". If you uncheck or check a checkbox, the collection will be updated immediately.

You can also modify the collection contents in the viewmodel code which will update the checkbox check states appropriately.

<h3>Select extra ingredients for your pizza:</h3>

<bp:CheckBox Text="Corn (0.5$)" CheckedValue="{value: 0.5}" CheckedItems="{value: Extras}" Changed="{command: UpdatePrice()}" />
<bp:CheckBox Text="Jalapeño (0.75$)" CheckedValue="{value: 0.75}" CheckedItems="{value: Extras}" Changed="{command: UpdatePrice()}" />
<bp:CheckBox Text="Bacon (1$)" CheckedValue="{value: 1}" CheckedItems="{value: Extras}" Changed="{command: UpdatePrice()}" />

<br />

<p>Total Price: {{value: Price}}$</p>
using System.Collections.Generic;
using System.Linq;
using DotVVM.Framework.ViewModel;

namespace DotvvmWeb.Views.Docs.Controls.businesspack.CheckBox.sample2
{
    public class ViewModel : DotvvmViewModelBase
    {
        public List<double> Extras { get; set; } = new List<double>();
        public double Price { get; set; }

        public void UpdatePrice()
        {
            Price = Extras.DefaultIfEmpty(0).Sum();
        }
    }
}

Sample 3: CheckBox's Changed Event

The CheckBox has the Changed event which is fired whenever the checkbox is checked or unchecked.

<bp:CheckBox Checked="{value: Value}" Changed="{command: OnChanged()}" />

<p>{{value: NumberOfChanges}}</p>
using DotVVM.Framework.ViewModel;

namespace DotvvmWeb.Views.Docs.Controls.businesspack.CheckBox.sample3
{
    public class ViewModel : DotvvmViewModelBase
    {
        public bool Value { get; set; }

        public int NumberOfChanges { get; set; } = 0;

        public void OnChanged()
        {
            NumberOfChanges++;
        }
    }
}

Real World Sample

The total price is calculated by summing of all CheckedValues and is updated after any change by Changed event.

Because the collection holds floats instead of strings, we have to use the {value: 0.5} binding instead of just "0.5". It would be treated as string otherwise.

<h3>Additional ingredients for your pizza!</h3>
<p>
    <bp:CheckBox CheckedItems="{value: Extra}" 
                  Changed="{command: UpdatePrice()}" 
                  CheckedValue="{value: 0.5}" Text="Jalapeño" />
    <br />

    <bp:CheckBox CheckedItems="{value: Extra}" 
                  Changed="{command: UpdatePrice()}" 
                  CheckedValue="{value: 0.45}" Text="Egg" />
    <br />

    <bp:CheckBox CheckedItems="{value: Extra}" 
                  Changed="{command: UpdatePrice()}" 
                  CheckedValue="{value: 0.75}" Text="Tuna" />
    <br />

    <bp:CheckBox CheckedItems="{value: Extra}" 
                  Changed="{command: UpdatePrice()}" 
                  CheckedValue="{value: 0.2}" Text="Garlic" />
    <br />

    <bp:CheckBox CheckedItems="{value: Extra}" 
                  Changed="{command: UpdatePrice()}" 
                  CheckedValue="{value: 0.8}" Text="Magic Mushrooms" />
</p>

<p>Total price: ${{value: Price}}</p>

using System.Collections.Generic;
using System.Linq;
using DotVVM.Framework.ViewModel;

namespace DotvvmWeb.Views.Docs.Controls.businesspack.CheckBox.sample4
{
    public class ViewModel : DotvvmViewModelBase
    {
        public List<float> Extra { get; set; } = new List<float>();

        public float Price { get; set; } = 4;

        public void UpdatePrice()
        {
            Price = 4 + Extra.DefaultIfEmpty(0).Sum();
        }

    }
}

Properties

Name Type Description Notes Default Value
property icon Attributes Dictionary<String,Object>
attribute
inner element
static value
bindable
default
null
property icon 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
inner element
static value
bindable
default
False
property icon Checked Boolean? Gets or sets whether the control is checked.
attribute
inner element
static value
bindable
default
False
property icon CheckedItems IEnumerable Gets or sets a collection of values of all checked checkboxes. Use this property in combination with the CheckedValue property.
attribute
inner element
static value
bindable
default
null
property icon CheckedValue Object Gets or sets the value that will be used as a result when the control is checked. Use this property in combination with the CheckedItem or CheckedItems property.
attribute
inner element
static value
bindable
default
null
property icon ClientIDMode ClientIDMode Gets or sets the client ID generation algorithm.
attribute
inner element
static value
bindable
default
Static
property icon 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.
attribute
inner element
static value
bindable
default
null
property icon Enabled Boolean Gets or sets a value indicating whether the control is enabled and can be clicked on.
attribute
inner element
static value
bindable
default
True
property icon ID String Gets or sets the unique control ID.
attribute
inner element
static value
bindable
default
null
property icon InnerText String Gets or sets the inner text of the HTML element.
attribute
inner element
static value
bindable
default
null
property icon RenderEmptyLabel Boolean Gets or sets whether to render an empty <label> element when the Text is empty. It allows to use custom CheckBox themes. The default value is true.
attribute
inner element
static value
bindable
default
True
property icon 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
inner element
static value
bindable
default
0
property icon Text String Gets or sets the label text that is rendered next to the control.
attribute
inner element
static value
bindable
default
property icon Visible Boolean Gets or sets whether the control is visible.
attribute
inner element
static value
bindable
default
True

Events

Name Type Description
event icon Changed Command Gets or sets the command that will be triggered when the control check state is changed.

HTML produced by the control

With no Text or an inner content specified, the control renders just the checkbox.

<input type="checkbox" data-bind="..." />

If there is a Text or an inner content, the label is rendered around the checkbox.

<label>
  <input type="checkbox" data-bind="..." />
  Text or inner content
</label>