ToolTip
Eine QuickInfo erscheint, wenn der Zeiger ruht: nach InitialShowDelay (400 ms), für ShowDuration (5 s). Sie verschwindet beim Verlassen, Klicken, Rad und Tasten. Inhalt ist ein Text oder ein ganzer Baum; ein Text ist zugleich der Hilfetext für Bildschirmleser.


KXAML
ToolTipSeite.kxaml
<StackPanel xmlns="https://ui.kuonen.org/kxaml"
xmlns:x="https://ui.kuonen.org/kxaml/x"
x:Class="Kuonen.UI.Galerie.Seiten.ToolTipVorfuehrung"
Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="8">
<!-- Text als QuickInfo. -->
<Button Content="Speichern" ToolTipService.ToolTip="Speichert das Dokument (Strg+S)." />
<!-- Sofort und lange sichtbar. -->
<Button Content="Sofort" ToolTipService.ToolTip="Ohne Wartezeit, 10 Sekunden lang."
ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="10000" />
<!-- Ein ganzer Baum als Inhalt. -->
<Button Content="Mit Inhalt">
<ToolTipService.ToolTip>
<ToolTip>
<StackPanel Spacing="4">
<TextBlock Text="Formatieren" FontWeight="SemiBold" />
<TextBlock Text="Fett, kursiv und unterstrichen für die Auswahl umschalten." />
</StackPanel>
</ToolTip>
</ToolTipService.ToolTip>
</Button>
<!-- Ein deaktiviertes Element zeigt keine QuickInfo: der Zeiger geht durch. -->
<Button Content="Deaktiviert" IsEnabled="False" ToolTipService.ToolTip="Wird nie gezeigt." />
</StackPanel>
<TextBlock Text="Den Zeiger über einer Schaltfläche ruhen lassen." TextWrapping="Wrap" />
</StackPanel>ToolTipSeite.kxaml.cs
using Kuonen.UI;
namespace Kuonen.UI.Galerie.Seiten;
public sealed partial class ToolTipSeite
{
protected override Func<UIElement>? KxamlFabrik => () => new ToolTipVorfuehrung();
}
/// <summary>KXAML-Fassung der ToolTip-Seite: alles steht in ToolTipSeite.kxaml; Verhalten braucht es keines.</summary>
public sealed partial class ToolTipVorfuehrung
{
public ToolTipVorfuehrung() => InitializeComponent();
}C#
ToolTipSeite.cs
using Kuonen.UI;
using Kuonen.UI.Controls;
using Kuonen.UI.Layout;
namespace Kuonen.UI.Galerie.Seiten;
/// <summary>Galerie-Seite: <see cref="ToolTip"/> und <see cref="ToolTipService"/>.</summary>
public sealed partial class ToolTipSeite : GalerieSeite
{
public override string Titel => "ToolTip";
public override string Beschreibung =>
"Eine QuickInfo erscheint, wenn der Zeiger ruht: nach InitialShowDelay (400 ms), für ShowDuration (5 s). Sie "
+ "verschwindet beim Verlassen, Klicken, Rad und Tasten. Inhalt ist ein Text oder ein ganzer Baum; ein Text "
+ "ist zugleich der Hilfetext für Bildschirmleser.";
public override string Stichworte => "QuickInfo Hinweis Tooltip ToolTipService InitialShowDelay ShowDuration Hilfetext";
public override string Datei => nameof(ToolTipSeite);
public override UIElement Baue()
{
// Text als QuickInfo.
var speichern = new Button { Content = "Speichern" };
ToolTipService.SetToolTip(speichern, "Speichert das Dokument (Strg+S).");
// Sofort und lange sichtbar.
var sofort = new Button { Content = "Sofort" };
ToolTipService.SetToolTip(sofort, "Ohne Wartezeit, 10 Sekunden lang.");
ToolTipService.SetInitialShowDelay(sofort, 0);
ToolTipService.SetShowDuration(sofort, 10_000);
// Ein ganzer Baum als Inhalt.
var reich = new Button { Content = "Mit Inhalt" };
var blase = new StackPanel { Spacing = 4 };
blase.Children.Add(new TextBlock { Text = "Formatieren", FontWeight = 600 });
blase.Children.Add(new TextBlock { Text = "Fett, kursiv und unterstrichen\nfür die Auswahl umschalten." });
ToolTipService.SetToolTip(reich, new ToolTip { Content = blase });
// Ein deaktiviertes Element zeigt keine QuickInfo: der Zeiger geht durch.
var aus = new Button { Content = "Deaktiviert", IsEnabled = false };
ToolTipService.SetToolTip(aus, "Wird nie gezeigt.");
var reihe = new StackPanel { Orientation = Orientation.Horizontal, Spacing = 8 };
reihe.Children.Add(speichern);
reihe.Children.Add(sofort);
reihe.Children.Add(reich);
reihe.Children.Add(aus);
var seite = new StackPanel { Spacing = 12 };
seite.Children.Add(reihe);
seite.Children.Add(new TextBlock { Text = "Den Zeiger über einer Schaltfläche ruhen lassen.", TextWrapping = TextWrapping.Wrap });
return seite;
}
}