Xamarin.Forms Checkbox

Beispiel herunterladen Das Beispiel herunterladen

Der Xamarin.FormsCheckBox ist ein Typ von Schaltflächen, die entweder aktiviert oder leer sein kann. Wenn ein Kontrollkästchen aktiviert ist, gilt es als aktiviert. Wenn ein Kontrollkästchen leer ist, gilt es als deaktiviert.

CheckBox definiert eine bool Eigenschaft namens IsChecked, die angibt, ob der CheckBox aktiviert ist. Diese Eigenschaft wird auch durch ein BindableProperty -Objekt unterstützt, was bedeutet, dass es formatiert werden kann und das Ziel von Datenbindungen sein kann.

Hinweis

Die IsChecked bindbare Eigenschaft weist den Standardbindungsmodus auf BindingMode.TwoWay.

CheckBox definiert ein CheckedChanged Ereignis, das ausgelöst wird, wenn sich die IsChecked Eigenschaft ändert, entweder durch Benutzerbearbeitung oder wenn eine Anwendung die IsChecked Eigenschaft festlegt. Das CheckedChangedEventArgs -Objekt, das das CheckedChanged Ereignis begleitet, verfügt über eine einzelne Eigenschaft mit dem Namen 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 eines CheckBox-Steuerelements

Das folgende Beispiel zeigt, wie ein CheckBox in XAML instanziieren wird:

<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 der CheckBox leer. Kann CheckBox durch Benutzermanipulation oder durch Festlegen der IsChecked -Eigenschaft auf trueüberprüft 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 kann ein CheckBox im Code erstellt werden:

CheckBox checkBox = new CheckBox { IsChecked = true };

Reagieren auf einen Sich ändernden CheckBox-Zustand

Wenn sich die IsChecked Eigenschaft ändert, entweder durch Benutzerbearbeitung oder wenn eine Anwendung die IsChecked Eigenschaft festlegt, wird das CheckedChanged Ereignis ausgelöst. Ein Ereignishandler für dieses Ereignis kann 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 CheckBox für dieses Ereignis verantwortlich. Sie können dies verwenden, um auf das CheckBox -Objekt zuzugreifen oder zwischen mehreren CheckBox Objekten zu unterscheiden, die denselben CheckedChanged Ereignishandler verwenden.

Alternativ kann ein Ereignishandler 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 eines CheckBox-Steuerelements

Der CheckedChanged Ereignishandler kann entfernt werden, indem Datenbindung und Trigger verwendet werden, um auf ein aktiviertes CheckBox oder leeres Objekt zu reagieren:

<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 wird ein Label Bindungsausdruck in einem Datentrigger verwendet, um die IsChecked -Eigenschaft von CheckBoxzu überwachen. Wenn diese Eigenschaft zu wird, werden truedie FontAttributes Eigenschaften und FontSize der Label Änderung. Wenn die IsChecked -Eigenschaft zu zurückgibt false, werden die FontAttributes Eigenschaften und FontSize des Label auf ihren Ursprünglichen Zustand zurückgesetzt.

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

Screenshot eines datengebundenen CheckBox-Steuerelements unter iOS und Android

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

Deaktivieren eines Kontrollkästchens

Manchmal tritt eine Anwendung in einen Zustand ein, in dem ein CheckBox überprüfter Vorgang kein gültiger Vorgang ist. In solchen Fällen kann das CheckBox deaktiviert werden, indem die zugehörige IsEnabled-Eigenschaft auf false festgelegt wird.

CheckBox-Darstellung

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

<CheckBox Color="Red" />

Die folgenden Screenshots zeigen eine Reihe von überprüften CheckBox Objekten, bei denen für jedes Objekt seine Color Eigenschaft auf eine andere Colorfestgelegt ist:

Screenshot: Farbige CheckBoxes unter iOS und Android

CheckBox-visuelle Zustände

CheckBox verfügt über einen IsCheckedVisualState , der verwendet werden kann, um eine visuelle Änderung an dem CheckBox zu initiieren, wenn es aktiviert wird.

Das folgende XAML-Beispiel zeigt, wie ein visueller Zustand für den IsChecked Zustand 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 gibt die IsCheckedVisualState an, dass die CheckBox -Eigenschaft beim Kontrollkästchen Color auf grün festgelegt wird. Gibt NormalVisualState an, dass die -Eigenschaft auf rot festgelegt wird, Color wenn sich die CheckBox Eigenschaft in einem normalen Zustand befindet. Daher ist der Gesamteffekt, dass rot CheckBox ist, wenn es leer ist, und grün, wenn es aktiviert ist.

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