Teilen über


Xamarin.Forms Checkbox

Dies Xamarin.FormsCheckBox ist eine Art von Schaltfläche, die entweder überprüft oder leer sein kann. Wenn ein Kontrollkästchen markiert ist, gilt es als aktiviert. Wenn ein Kontrollkästchen leer ist, gilt es als deaktiviert.

CheckBox definiert eine bool Eigenschaft mit dem Namen IsChecked, die angibt, ob die CheckBox Eigenschaft aktiviert ist. Diese Eigenschaft wird auch von einem BindableProperty Objekt unterstützt, was bedeutet, dass sie formatiert werden kann und das Ziel von Datenbindungen sein kann.

Hinweis

Die IsChecked bindungsfähige Eigenschaft verfügt über einen Standardbindungsmodus von BindingMode.TwoWay.

CheckBox definiert ein CheckedChanged Ereignis, das ausgelöst wird, wenn sich die IsChecked Eigenschaft ändert, entweder durch Benutzermanipulation oder wenn eine Anwendung die IsChecked Eigenschaft festlegt. Das CheckedChangedEventArgs-Objekt, das das CheckedChanged-Ereignis begleitet, hat eine einzige Eigenschaft namens Value vom Typ bool. Wenn das Ereignis ausgelöst wird, wird der Wert der Value Eigenschaft auf den neuen Wert der IsChecked Eigenschaft festgelegt.

Erstellen einer CheckBox

Das folgende Beispiel zeigt, wie man ein CheckBox in XAML instanziiert:

<CheckBox />

Dieser XAML-Code führt zu der Darstellung, die in den folgenden Screenshots gezeigt wird:

Screenshot eines leeren Kontrollkästchens unter iOS und Android

Standardmäßig ist CheckBox leer. Die CheckBox kann durch Benutzermanipulation oder durch Setzen der Eigenschaft IsChecked auf true markiert werden:

<CheckBox IsChecked="true" />

Dieser XAML-Code führt zu der Darstellung, die in den folgenden Screenshots gezeigt wird:

Screenshot eines aktivierten Kontrollkästchens unter iOS und Android

Alternativ dazu kann ein CheckBox im Code erstellt werden:

CheckBox checkBox = new CheckBox { IsChecked = true };

Reagieren auf eine Statusänderung einer CheckBox

Wenn sich die IsChecked-Eigenschaft ändert, entweder durch Eingriffe von Benutzer*innen oder wenn eine Anwendung die IsChecked-Eigenschaft festlegt, wird das Ereignis CheckedChanged ausgelöst. Es kann ein Ereignisbehandler für dieses Ereignis registriert werden, um auf die Änderung zu reagieren:

<CheckBox CheckedChanged="OnCheckBoxCheckedChanged" />

Die CodeBehind-Datei enthält den Handler für das CheckedChanged- Ereignis:

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

Das sender-Argument ist der CheckBox, der für dieses Ereignis verantwortlich ist. Sie können dies verwenden, um auf das CheckBox-Objekt zuzugreifen oder um zwischen mehreren CheckBox-Objekten zu unterscheiden, die sich denselben CheckedChanged-Ereignishandler teilen.

Alternativ kann ein Ereeignishandler für das CheckedChanged-Ereignis im Code registriert werden:

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

Datenbindung einer CheckBox

Der CheckedChanged-Ereignishandler kann durch die Verwendung von Datenbindung und Auslösern als Reaktion auf ein CheckBox, das markiert oder leer ist, eliminiert werden:

<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>

In diesem Beispiel verwendet der Label einen Bindungsausdruck in einem Datenauslöser, um die IsChecked-Eigenschaft des CheckBox zu überwachen. Wenn diese Eigenschaft zu true wird, ändern sich die FontAttributes und FontSize Eigenschaften des Label. Wenn die IsChecked-Eigenschaft zu false zurückkehrt, werden die FontAttributes- und FontSize-Eigenschaften von Label auf ihren Ausgangszustand zurückgesetzt.

In den folgenden Screenshots zeigt der iOS-Screenshot die Label Formatierung, wenn sie CheckBox leer ist, während der Android-Screenshot die Label Formatierung anzeigt, wenn die CheckBox Option aktiviert ist:

Screenshot eines datengebundenen CheckBox-Steuerelements unter iOS und Android

Weitere Informationen zu Triggern finden Sie unter Xamarin.Forms Trigger.

Deaktivieren einer Checkbox

Manchmal befindet sich eine Anwendung in einem Zustand, in dem eine CheckBox, die markiert wird, keine gültige Operation ist. In solchen Fällen kann die CheckBox deaktiviert werden, indem die zugehörige IsEnabled-Eigenschaft auf false festgelegt wird.

CheckBox-Darstellung

Zusätzlich zu den Eigenschaften, die CheckBox von der Klasse View erbt, definiert CheckBox auch eine Color-Eigenschaft, die seine Farbe auf eine Color setzt:

<CheckBox Color="Red" />

Die folgenden Screenshots zeigen eine Reihe von überprüften CheckBox Objekten, wobei jedes Objekt seine Color Eigenschaft auf ein anderes Colorfestgelegt hat:

Screenshot der farbigen CheckBoxes unter iOS und Android

CheckBox: visuelle Status

CheckBox hat ein IsCheckedVisualState, das verwendet werden kann, um eine visuelle Veränderung des CheckBox zu initiieren, wenn es markiert wird.

Das folgende XAML-Beispiel zeigt, wie ein visueller Zustand für den Zustand IsChecked definiert wird:

<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>

In diesem Beispiel legt IsCheckedVisualState fest, dass die Eigenschaft Color auf grün gesetzt wird, wenn CheckBox markiert wird. NormalVisualState legt fest, dass die Color-Eigenschaft auf rot gesetzt wird, wenn sich die CheckBox in einem normalen Zustand befindet. Der Gesamteffekt ist also, dass CheckBox rot ist, wenn es leer ist, und grün, wenn es angekreuzt ist.

Weitere Informationen zu visuellen Zuständen finden Sie unter Xamarin.Forms: Visual State-Manager.