XAML - Ereignisbehandlung
Das allgemeine Konzept von Ereignissen in XAML ähnelt Ereignissen in anderen gängigen Programmiersprachen wie .NET und C ++. In XAML machen alle Steuerelemente einige Ereignisse verfügbar, damit sie für bestimmte Zwecke abonniert werden können.
Jedes Mal, wenn ein Ereignis stattfindet, wird die Anwendung benachrichtigt und das Programm kann darauf reagieren, z. B. werden Schaltflächen zum Schließen verwendet, um einen Dialog zu schließen.
Es gibt viele Arten von Ereignissen, die je nach Anforderung dieser Anwendung für unterschiedliche Verhaltensweisen einer Anwendung abonniert werden können. Die am häufigsten verwendeten Ereignisse sind jedoch Ereignisse, die sich auf Maus und Tastatur beziehen, z.
- Click
- MouseDown
- MouseEnter
- MouseLeave
- MouseUp
- KeyDown
- KeyUp
In diesem Kapitel werden einige der grundlegenden und am häufigsten verwendeten Ereignisse verwendet, um zu verstehen, wie ein Ereignis eines bestimmten Steuerelements mit dem Code verknüpft werden kann, hinter dem das Verhalten implementiert wird, je nachdem, was der Benutzer bei einem bestimmten Ereignis tun möchte tritt ein.
Schauen wir uns ein einfaches Beispiel für ein Ereignis mit Schaltflächenklick an. Im Folgenden wird die XAML-Implementierung für das Button-Steuerelement angegeben, die mit einigen Eigenschaften und einem Click-Ereignis (Click = "OnClick") erstellt und initialisiert wird.
<Window x:Class = "XAMLEventHandling.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<Button x:Name = "button1" Content = "Click" Click = "OnClick"
Width = "150" Height = "30" HorizontalAlignment = "Center" />
</Grid>
</Window>
Immer wenn auf diese Schaltfläche geklickt wird, wird ein ausgelöst OnClickEreignis und Sie können jede Art von Verhalten als Antwort auf den Klick hinzufügen. Werfen wir einen Blick auf die OnClick-Ereignisimplementierung, die beim Klicken auf diese Schaltfläche eine Meldung anzeigt.
using System;
using System.Windows;
using System.Windows.Controls;
namespace XAMLEventHandling {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
private void OnClick(object sender, RoutedEventArgs e) {
MessageBox.Show("Button is clicked!");
}
}
}
Wenn Sie den obigen Code kompilieren und ausführen, wird die folgende Ausgabe erzeugt:
Wenn Sie auf die Schaltfläche klicken, wird das Klickereignis (OnClick) ausgelöst und die folgende Meldung angezeigt.
Schauen wir uns nun ein etwas komplexes Beispiel an, in dem mehrere Ereignisse behandelt werden.
Beispiel
Das folgende Beispiel enthält ein Textfeld mit ContextMenu, das den Text im Textfeld bearbeitet.
Der folgende XAML-Code erstellt eine TextBox, ein ContextMenu und MenuItems mit einigen Eigenschaften und Ereignissen wie "Aktiviert", "Deaktiviert" und "Klicken".
<Window x:Class = "XAMLContextMenu.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<TextBox Name = "textBox1" TextWrapping = "Wrap" Margin = "10" Grid.Row = "7">
Hi, this is XAML tutorial.
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header = "_Bold" IsCheckable = "True"
Checked = "Bold_Checked" Unchecked = "Bold_Unchecked" />
<MenuItem Header = "_Italic" IsCheckable = "True"
Checked = "Italic_Checked" Unchecked = "Italic_Unchecked" />
<Separator />
<MenuItem Header = "Increase Font Size" Click = "IncreaseFont_Click" />
<MenuItem Header = "_Decrease Font Size" Click = "DecreaseFont_Click" />
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Grid>
</Window>
Hier ist die Implementierung in C # für die verschiedenen Ereignisse, die ausgelöst werden, wenn ein Menüelement aktiviert, deaktiviert oder angeklickt wird.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace XAMLContextMenu {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
private void Bold_Checked(object sender, RoutedEventArgs e) {
textBox1.FontWeight = FontWeights.Bold;
}
private void Bold_Unchecked(object sender, RoutedEventArgs e) {
textBox1.FontWeight = FontWeights.Normal;
}
private void Italic_Checked(object sender, RoutedEventArgs e) {
textBox1.FontStyle = FontStyles.Italic;
}
private void Italic_Unchecked(object sender, RoutedEventArgs e) {
textBox1.FontStyle = FontStyles.Normal;
}
private void IncreaseFont_Click(object sender, RoutedEventArgs e) {
if (textBox1.FontSize < 18) {
textBox1.FontSize += 2;
}
}
private void DecreaseFont_Click(object sender, RoutedEventArgs e) {
if (textBox1.FontSize > 10) {
textBox1.FontSize -= 2;
}
}
}
}
Wenn Sie den obigen Code kompilieren und ausführen, wird die folgende Ausgabe erzeugt:
Wir empfehlen Ihnen, den obigen Beispielcode auszuführen und mit einigen anderen Ereignissen zu experimentieren.
Veranstaltungen
Sr.Nr. | Bedienelemente & Beschreibung |
---|---|
1 | Checked Wird ausgelöst, wenn ein ToggleButton aktiviert ist. (Von ToggleButton geerbt) |
2 | Click Tritt auf, wenn auf ein Schaltflächensteuerelement geklickt wird. (Von ButtonBase geerbt) |
3 | ContextMenuClosing Tritt unmittelbar vor dem Schließen eines Kontextmenüs für das Element auf. (Von FrameworkElement geerbt.) |
4 | ContextMenuOpening Tritt auf, wenn ein Kontextmenü für das Element geöffnet wird. (Von FrameworkElement geerbt.) |
5 | DataContextChanged Tritt auf, wenn sich der Wert der FrameworkElement.DataContext-Eigenschaft ändert. (Von FrameworkElement geerbt) |
6 | DragEnter Tritt auf, wenn das Eingabesystem ein zugrunde liegendes Drag-Ereignis mit diesem Element als Ziel meldet. (Von UIElement geerbt). |
7 | DragLeave Tritt auf, wenn das Eingabesystem ein zugrunde liegendes Drag-Ereignis mit diesem Element als Ursprung meldet. (Von UIElement geerbt) |
8 | DragOver Tritt auf, wenn das Eingabesystem ein zugrunde liegendes Drag-Ereignis mit diesem Element als potenziellem Drop-Ziel meldet. (Von UIElement geerbt) |
9 | DragStarting Tritt auf, wenn ein Ziehvorgang gestartet wird. (Von UIElement geerbt) |
10 | DropCompleted Tritt auf, wenn ein Drag & Drop-Vorgang beendet wird. (Von UIElement geerbt) |
11 | DropDownClosed Tritt auf, wenn der Dropdown-Bereich der ComboBox geschlossen wird. |
12 | DropDownOpened Tritt auf, wenn der Dropdown-Bereich der ComboBox geöffnet wird. |
13 | GotFocus Tritt auf, wenn ein UIElement den Fokus erhält. (Von UIElement geerbt) |
14 | Holding Tritt auf, wenn eine ansonsten nicht behandelte Hold-Interaktion über dem Treffer-Testbereich dieses Elements auftritt. (Von UIElement geerbt) |
15 | Intermediate Wird ausgelöst, wenn der Status eines ToggleButton in den unbestimmten Status versetzt wird. (Von ToggleButton geerbt) |
16 | IsEnabledChanged Tritt auf, wenn sich die IsEnabled-Eigenschaft ändert. (Von der Kontrolle geerbt) |
17 | KeyDown Tritt auf, wenn eine Tastaturtaste gedrückt wird, während das UIElement den Fokus hat. (Von UIElement geerbt) |
18 | KeyUp Tritt auf, wenn eine Tastaturtaste losgelassen wird, während das UIElement den Fokus hat. (Von UIElement geerbt) |
19 | LostFocus Tritt auf, wenn ein UIElement den Fokus verliert. (Von UIElement geerbt) |
20 | ManipulationCompleted Tritt auf, wenn eine Manipulation am UIElement abgeschlossen ist. (Von UIElement geerbt) |
21 | ManipulationDelta Tritt auf, wenn das Eingabegerät während einer Manipulation seine Position ändert. (Von UIElement geerbt) |
22 | ManipulationInertiaStarting Tritt auf, wenn das Eingabegerät während einer Manipulation den Kontakt zum UIElement-Objekt verliert und die Trägheit beginnt. (Von UIElement geerbt) |
23 | ManipulationStarted Tritt auf, wenn ein Eingabegerät eine Manipulation am UIElement beginnt. (Von UIElement geerbt) |
24 | ManipulationStarting Tritt auf, wenn der Manipulationsprozessor zum ersten Mal erstellt wird. (Von UIElement geerbt) |
25 | SelectionChanged Tritt auf, wenn sich die Textauswahl geändert hat. |
26 | SizeChanged Tritt auf, wenn entweder die ActualHeight- oder die ActualWidth-Eigenschaft den Wert eines FrameworkElement ändert. (Von FrameworkElement geerbt) |
27 | Unchecked Tritt auf, wenn ein ToggleButton deaktiviert ist. (Von ToggleButton geerbt) |
28 | ValueChanged Tritt auf, wenn sich der Bereichswert ändert. (Von RangeBase geerbt) |