Wir haben bereits Button-Steuerelemente in vorherigen Lektionen verwendet. Das grundlegendste Element ist Button, nun lernen wir weitere Button-Typen kennen. Buttons sind Steuerelemente für die Benutzerinteraktion; ein Klick löst die zugehörige Programm-Logik aus.
Folgende Button-Steuerelemente stehen in WinUI 3 C++ zur Verfügung:
- Button:Standard-Klickbutton
- ToggleButton:Umschaltbutton mit Zustand geprüft / ungeprüft
- RepeatButton:Löst wiederholt Klick-Ereignisse aus, wenn gedrückt gehalten
- HyperlinkButton:Button im Hyperlink-Stil
- SplitButton:Kombiniertes Steuerelement aus Hauptbutton + Dropdown-Menü
- DropDownButton:Nur mit Dropdown-Menü ausgestatteter Button
- CommandBarButton / AppBarButton:Symbolbuttons für Werkzeugleisten
- MenuFlyoutItem / ToggleMenuFlyoutItem:Einträge für Rechtsklick- oder Dropdown-Menüs
Im Folgenden demonstrieren wir die XAML-Deklaration aller dieser Steuerelemente. Die Ereignisbindung im Backend funktioniert identisch wie zuvor: Cursor auf den Click-Ereignisnamen setzen und F12 drücken, um die zugehörige Ereignisfunktion automatisch zu generieren. Wir bearbeiten MainWindow.xaml.
<StackPanel Spacing="15" Padding="20" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<!-- 1. Button: Standard click button -->
<Button x:Name="NormalBtn" Content="Standard Button (Button)" Click="NormalBtn_Click"/>
<!-- 2. ToggleButton: Switchable checked/unchecked state button -->
<ToggleButton x:Name="ToggleBtn" Content="Toggle Button (ToggleButton)"/>
<!-- 3. RepeatButton: Trigger click continuously when holding down -->
<RepeatButton x:Name="RepeatBtn" Content="Repeat Button (RepeatButton)" Click="RepeatBtn_Click"/>
<!-- 4. HyperlinkButton: Hyperlink style button -->
<HyperlinkButton Content="Hyperlink Button (HyperlinkButton)" NavigateUri="https://learn.microsoft.com/windows/apps/winui"/>
<!-- 5. SplitButton: Combined main button + dropdown menu -->
<SplitButton Content="Split Button (SplitButton)">
<SplitButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem Text="Option A"/>
<MenuFlyoutItem Text="Option B"/>
</MenuFlyout>
</SplitButton.Flyout>
</SplitButton>
<!-- 6. DropDownButton: Button with dropdown menu only -->
<DropDownButton Content="Dropdown Button (DropDownButton)">
<DropDownButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem Text="Function 1"/>
<ToggleMenuFlyoutItem Text="Enable Mode"/>
</MenuFlyout>
</DropDownButton.Flyout>
</DropDownButton>
<!-- 8. MenuFlyoutItem / ToggleMenuFlyoutItem: Right-click / dropdown menu items -->
<Button Content="Right-click to open menu" Width="220">
<Button.Flyout>
<MenuFlyout>
<MenuFlyoutItem Text="Normal Menu Item (MenuFlyoutItem)"/>
<ToggleMenuFlyoutItem Text="Checkable Menu Item (ToggleMenuFlyoutItem)"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem Text="Exit"/>
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>Code-Sprache: HTML, XML (xml)
Setze den Cursor auf Click="NormalBtn_Click" und Click="RepeatBtn_Click" und drücke F12, um zwei leere Funktionen zu erstellen. Für diese Demo ist keine Implementierung erforderlich; interessierte Leser können beliebige Logik ergänzen.
void winrt::App6::implementation::MainWindow::NormalBtn_Click(winrt::Windows::Foundation::IInspectable const& sender,
winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
}
void winrt::App6::implementation::MainWindow::RepeatBtn_Click(winrt::Windows::Foundation::IInspectable const& sender,
winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
}
Code-Sprache: C++ (cpp)