Zum Inhalt
Kuonen.UI

ToggleSwitch

Ein Kippschalter für Ein/Aus, das sofort wirkt. IsOn ist zweiwertig, der Knopf gleitet; OnContent und OffContent beschriften den jeweiligen Zustand.

Vorführung: ToggleSwitchVorführung: ToggleSwitch

KXAML

ToggleSwitchSeite.kxaml
<StackPanel xmlns="https://ui.kuonen.org/kxaml"
            xmlns:x="https://ui.kuonen.org/kxaml/x"
            x:Class="Kuonen.UI.Galerie.Seiten.ToggleSwitchVorfuehrung"
            Spacing="12">
  <StackPanel Orientation="Horizontal" Spacing="16">
    <TextBlock Text="WLAN" Width="120" VerticalAlignment="Center" />
    <ToggleSwitch OffContent="Aus" OnContent="Ein" Checked="Wlan_Checked" Unchecked="Wlan_Unchecked" />
  </StackPanel>
  <TextBlock x:Name="Meldung" Text="WLAN ist aus." />
  <StackPanel Orientation="Horizontal" Spacing="24">
    <ToggleSwitch OffContent="Aus" OnContent="Ein" IsOn="True" />
    <ToggleSwitch OffContent="Deaktiviert" OnContent="Deaktiviert" IsEnabled="False" />
    <ToggleSwitch OffContent="Deaktiviert" OnContent="Deaktiviert, ein" IsOn="True" IsEnabled="False" />
  </StackPanel>
</StackPanel>
ToggleSwitchSeite.kxaml.cs
using Kuonen.UI;
using Kuonen.UI.Ereignisse;

namespace Kuonen.UI.Galerie.Seiten;

public sealed partial class ToggleSwitchSeite
{
    protected override Func<UIElement>? KxamlFabrik => () => new ToggleSwitchVorfuehrung();
}

/// <summary>KXAML-Fassung der ToggleSwitch-Seite: der Baum steht in ToggleSwitchSeite.kxaml, hier nur das Verhalten.</summary>
public sealed partial class ToggleSwitchVorfuehrung
{
    public ToggleSwitchVorfuehrung() => InitializeComponent();

    private void Wlan_Checked(object sender, RoutedEventArgs e) => Meldung.Text = "WLAN ist ein.";

    private void Wlan_Unchecked(object sender, RoutedEventArgs e) => Meldung.Text = "WLAN ist aus.";
}

C#

ToggleSwitchSeite.cs
using Kuonen.UI;
using Kuonen.UI.Controls;
using Kuonen.UI.Layout;

namespace Kuonen.UI.Galerie.Seiten;

/// <summary>Galerie-Seite: <see cref="ToggleSwitch"/>.</summary>
public sealed partial class ToggleSwitchSeite : GalerieSeite
{
    public override string Titel => "ToggleSwitch";

    public override string Beschreibung =>
        "Ein Kippschalter für Ein/Aus, das sofort wirkt. IsOn ist zweiwertig, der Knopf gleitet; OnContent und "
        + "OffContent beschriften den jeweiligen Zustand.";

    public override string Stichworte => "Kippschalter Schalter Ein Aus IsOn OnContent OffContent umschalten";

    public override string Datei => nameof(ToggleSwitchSeite);

    public override UIElement Baue()
    {
        var meldung = new TextBlock { Text = "WLAN ist aus." };
        var wlan = new ToggleSwitch { OffContent = "Aus", OnContent = "Ein" };
        wlan.Checked += (_, _) => meldung.Text = "WLAN ist ein.";
        wlan.Unchecked += (_, _) => meldung.Text = "WLAN ist aus.";

        var zeile = new StackPanel { Orientation = Orientation.Horizontal, Spacing = 16 };
        zeile.Children.Add(new TextBlock { Text = "WLAN", Width = 120, VerticalAlignment = VerticalAlignment.Center });
        zeile.Children.Add(wlan);

        var zustaende = new StackPanel { Orientation = Orientation.Horizontal, Spacing = 24 };
        zustaende.Children.Add(new ToggleSwitch { OffContent = "Aus", OnContent = "Ein", IsOn = true });
        zustaende.Children.Add(new ToggleSwitch { OffContent = "Deaktiviert", OnContent = "Deaktiviert", IsEnabled = false });
        zustaende.Children.Add(new ToggleSwitch { OffContent = "Deaktiviert", OnContent = "Deaktiviert, ein", IsOn = true, IsEnabled = false });

        var seite = new StackPanel { Spacing = 12 };
        seite.Children.Add(zeile);
        seite.Children.Add(meldung);
        seite.Children.Add(zustaende);
        return seite;
    }
}