Zum Inhalt
Kuonen.UI

SplitView

Ein Inhalt mit ausklappbarem Bereich in vier Modi (über dem Inhalt, daneben, je auch kompakt als schmale Leiste). Über dem Inhalt schliessen ein Klick daneben, Esc und Zurück; mit dem Finger öffnet ein Wischen vom Rand.

Vorführung: SplitViewVorführung: SplitView

KXAML

SplitViewSeite.kxaml
<StackPanel xmlns="https://ui.kuonen.org/kxaml"
            xmlns:x="https://ui.kuonen.org/kxaml/x"
            x:Class="Kuonen.UI.Galerie.Seiten.SplitViewVorfuehrung"
            Spacing="12">
  <!-- Das Innere (Einträge, Kopplungen, Ereignisse) baut SplitViewSeite.Fuelle, dieselbe Methode wie die C#-Fassung. -->
  <SplitView x:Name="Ansicht" DisplayMode="CompactOverlay" OpenPaneLength="200" Width="480" Height="200" />
</StackPanel>
SplitViewSeite.kxaml.cs
using Kuonen.UI;

namespace Kuonen.UI.Galerie.Seiten;

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

/// <summary>KXAML-Fassung der Seite SplitView: das Gerüst steht in SplitViewSeite.kxaml, das Innere füllt SplitViewSeite.Fuelle.</summary>
public sealed partial class SplitViewVorfuehrung
{
    public SplitViewVorfuehrung()
    {
        InitializeComponent();
        SplitViewSeite.Fuelle(Ansicht);
    }
}

C#

SplitViewSeite.cs
using Kuonen.UI;
using Kuonen.UI.Controls;
using Kuonen.UI.Eingabe;
using Kuonen.UI.Layout;
using Kuonen.UI.Media;

namespace Kuonen.UI.Galerie.Seiten;

/// <summary>Galerie-Seite: SplitView (Plan 6f).</summary>
public sealed partial class SplitViewSeite : GalerieSeite
{
    public override string Titel => "SplitView";

    public override string Beschreibung =>
        "Ein Inhalt mit ausklappbarem Bereich in vier Modi (über dem Inhalt, daneben, je auch kompakt als schmale Leiste). Über dem Inhalt schliessen ein Klick daneben, Esc und Zurück; mit dem Finger öffnet ein Wischen vom Rand.";

    public override string Stichworte => "Drawer Bereich Pane Overlay Inline Kompakt Wischen SlidingPaneLayout DrawerLayout";

    public override string Datei => nameof(SplitViewSeite);

    public override UIElement Baue()
    {
        var seite = new StackPanel { Spacing = 12 };
        var ansicht = new SplitView { DisplayMode = SplitViewDisplayMode.CompactOverlay, OpenPaneLength = 200, Width = 480, Height = 200 };
        Fuelle(ansicht);
        seite.Children.Add(ansicht);
        return seite;
    }

    /// <summary>Bereich, Inhalt und der Knopf zum Öffnen (auch von der KXAML-Fassung benutzt).</summary>
    public static void Fuelle(SplitView ansicht)
    {
        var knopf = new Button { Content = "☰", Width = 40, Height = 40 };
        knopf.Click += (_, _) => ansicht.IsPaneOpen = !ansicht.IsPaneOpen;
        var bereich = new StackPanel { Children = { knopf, new TextBlock { Text = "Bereich", Margin = new Thickness(12) } } };
        ansicht.Pane = bereich;
        ansicht.PaneBackground = new SolidColorBrush(Color.FromRgb(0xE8, 0xE8, 0xF0));
        ansicht.Content = new TextBlock { Text = "Inhalt", Margin = new Thickness(16) };
    }
}