Xamarin.Forms CheckBox

Download Sample 下載範例

Xamarin.FormsCheckBox是可以核取或空白的按鈕類型。 核取複選框時,會將其視為開啟。 當複選框是空的時,它就會被視為關閉。

CheckBoxbool 定義名為 IsChecked的屬性,指出是否已 CheckBox 檢查 。 這個屬性也受到 BindableProperty 物件支援,這表示它可以設定樣式,並成為數據系結的目標。

注意

IsChecked可繫結屬性的預設系結模式為 BindingMode.TwoWay

CheckBox定義CheckedChanged透過使用者操作或應用程式設定 IsChecked 屬性時IsChecked引發的事件。 事件 CheckedChangedEventArgs 隨附 CheckedChanged 的物件具有名為 Value的單一屬性,類型 bool為 。 引發事件時,屬性的值 Value 會設定為 屬性的新值 IsChecked

建立 CheckBox

下列範例示範如何在 XAML 中具現化 CheckBox

<CheckBox />

此 XAML 會導致下列螢幕快照所示的外觀:

Screenshot of an empty Checkbox, on iOS and Android

根據預設,是空的 CheckBoxCheckBox可以透過使用者操作或將 IsChecked 屬性設定為 true來檢查 :

<CheckBox IsChecked="true" />

此 XAML 會導致下列螢幕快照所示的外觀:

Screenshot of a checked Checkbox, on iOS and Android

或者, CheckBox 可以在程式代碼中建立 :

CheckBox checkBox = new CheckBox { IsChecked = true };

回應 CheckBox 變更狀態

IsChecked當屬性變更時,可以透過使用者操作或應用程式設定 IsChecked 屬性時引發 CheckedChanged 事件。 您可以註冊此事件的事件處理程式以回應變更:

<CheckBox CheckedChanged="OnCheckBoxCheckedChanged" />

程式代碼後置檔案包含 事件的處理程式 CheckedChanged

void OnCheckBoxCheckedChanged(object sender, CheckedChangedEventArgs e)
{
    // Perform required operation after examining e.Value
}

sender 變數負責 CheckBox 此事件。 您可以使用這個來存取CheckBox物件,或區分共用相同CheckedChanged事件處理程式的多個CheckBox物件。

或者,事件事件處理程式 CheckedChanged 可以在程式代碼中註冊:

CheckBox checkBox = new CheckBox { ... };
checkBox.CheckedChanged += (sender, e) =>
{
    // Perform required operation after examining e.Value
};

數據系結 CheckBox

CheckedChanged您可以使用資料系結和觸發程式來回應CheckBox已檢查或空白的 ,來消除事件處理程式:

<CheckBox x:Name="checkBox" />
<Label Text="Lorem ipsum dolor sit amet, elit rutrum, enim hendrerit augue vitae praesent sed non, lorem aenean quis praesent pede.">
    <Label.Triggers>
        <DataTrigger TargetType="Label"
                     Binding="{Binding Source={x:Reference checkBox}, Path=IsChecked}"
                     Value="true">
            <Setter Property="FontAttributes"
                    Value="Italic, Bold" />
            <Setter Property="FontSize"
                    Value="Large" />
        </DataTrigger>
    </Label.Triggers>
</Label>

在此範例中,會 Label 使用數據觸發程式中的系結表達式來監視 IsCheckedCheckBox屬性。 當這個屬性變成 true時,FontAttributes變更的 LabelFontSize 屬性。 IsChecked當 屬性傳回 時false,的 FontAttributesFontSize 屬性Label會重設為其初始狀態。

在下列螢幕快照中,iOS 螢幕快照會在 空白時顯示Label格式設定,而 Android 螢幕快照則會在核取 時CheckBoxCheckBox顯示Label格式設定:

Screenshot of a data bound CheckBox, on iOS and Android

如需觸發程式的詳細資訊,請參閱 Xamarin.Forms 觸發程式

停用複選框

有時候應用程式會進入 CheckBox 正在檢查的狀態不是有效的作業。 在這種情況下, CheckBox 可以藉由將其 IsEnabled 屬性設定為 false來停用 。

CheckBox 外觀

除了繼承自 類別的屬性CheckBox之外,CheckBox也會定義Color屬性,其色彩設定為 ColorView

<CheckBox Color="Red" />

下列螢幕快照顯示一系列的已檢查 CheckBox 物件,其中每個物件都有其 Color 屬性設定為不同的 Color

Screenshot of colored CheckBoxes, on iOS and Android

CheckBox 視覺效果狀態

CheckBoxIsCheckedVisualState具有,可用來在檢查時起始視覺效果變更CheckBox

下列 XAML 範例示範如何定義狀態的 IsChecked 視覺狀態:

<CheckBox ...>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <VisualState.Setters>
                    <Setter Property="Color"
                            Value="Red" />
                </VisualState.Setters>
            </VisualState>

            <VisualState x:Name="IsChecked">
                <VisualState.Setters>
                    <Setter Property="Color"
                            Value="Green" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</CheckBox>

在此範例中,會 IsCheckedVisualState 指定核取 時 CheckBox ,其 Color 屬性會設定為綠色。 NormalVisualState指定 當 處於正常狀態時CheckBox,其 Color 屬性會設定為紅色。 因此,整體效果是 CheckBox ,在空白時為紅色,並在檢查時為綠色。

如需視覺狀態的詳細資訊,請參閱 Xamarin.Forms Visual State Manager