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)