XAML - Penanganan Acara

Konsep umum acara di XAML mirip dengan acara dalam bahasa pemrograman populer lainnya seperti .NET dan C ++. Di XAML, semua kontrol mengekspos beberapa kejadian sehingga mereka bisa berlangganan untuk tujuan tertentu.

Kapanpun sebuah event berlangsung, aplikasi akan diberitahu dan program dapat bereaksi padanya, misalnya, tombol tutup digunakan untuk menutup dialog.

Ada banyak jenis peristiwa yang dapat dilanggankan untuk berbagai perilaku aplikasi berdasarkan kebutuhan aplikasi itu, tetapi peristiwa yang paling umum digunakan adalah peristiwa yang terkait dengan mouse dan keyboard seperti,

  • Click
  • MouseDown
  • MouseEnter
  • MouseLeave
  • MouseUp
  • KeyDown
  • KeyUp

Dalam bab ini, kita akan menggunakan beberapa peristiwa dasar dan paling umum digunakan untuk memahami bagaimana peristiwa dari kontrol tertentu dapat ditautkan ke kode di belakang di mana perilaku akan diimplementasikan tergantung pada apa yang ingin dilakukan pengguna saat peristiwa tertentu. terjadi.

Mari kita lihat contoh sederhana dari acara klik tombol. Diberikan di bawah ini adalah implementasi XAML untuk kontrol Tombol yang dibuat dan diinisialisasi dengan beberapa properti dan event Klik (Click = "OnClick").

<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>

Setiap kali tombol ini diklik, itu akan mengaktifkan OnClickacara dan Anda dapat menambahkan jenis perilaku apa pun sebagai respons terhadap Klik. Mari kita lihat implementasi event OnClick yang akan menampilkan pesan ketika tombol ini diklik.

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!"); 
      } 
   }
}

Ketika Anda mengkompilasi dan mengeksekusi kode di atas, itu akan menghasilkan output berikut -

Ketika Anda mengklik tombol tersebut, event click (OnClick) akan dijalankan dan pesan berikut akan ditampilkan.

Sekarang mari kita lihat contoh yang sedikit rumit di mana banyak kejadian ditangani.

Contoh

Contoh berikut berisi kotak teks dengan ContextMenu yang memanipulasi teks di dalam kotak teks.

Kode XAML berikut membuat TextBox, ContextMenu, dan MenuItems dengan beberapa properti dan event seperti Checked, Unchecked, dan Click.

<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>

Berikut adalah implementasi di C # untuk berbagai kejadian yang akan dijalankan setiap kali item menu dicentang, tidak dicentang, atau diklik.

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; 
         } 
      }
   }
}

Ketika Anda mengkompilasi dan mengeksekusi kode di atas, itu akan menghasilkan output berikut -

Kami menyarankan Anda untuk menjalankan kode contoh di atas dan bereksperimen dengan beberapa peristiwa lainnya.

Acara

Sr.No. Kontrol & Deskripsi
1

Checked

Kebakaran saat ToggleButton dicentang. (Diwariskan dari ToggleButton)

2

Click

Terjadi saat kontrol tombol diklik. (Diwariskan dari ButtonBase)

3

ContextMenuClosing

Terjadi tepat sebelum menu konteks apa pun pada elemen ditutup. (Diwariskan dari FrameworkElement.)

4

ContextMenuOpening

Terjadi ketika menu konteks apa pun pada elemen dibuka. (Diwariskan dari FrameworkElement.)

5

DataContextChanged

Occurs when the value of the FrameworkElement.DataContext property changes. (Inherited from FrameworkElement)

6

DragEnter

Occurs when the input system reports an underlying drag event with this element as the target. (Inherited from UIElement).

7

DragLeave

Occurs when the input system reports an underlying drag event with this element as the origin. (Inherited from UIElement)

8

DragOver

Occurs when the input system reports an underlying drag event with this element as the potential drop target. (Inherited from UIElement)

9

DragStarting

Occurs when a drag operation is initiated. (Inherited from UIElement)

10

DropCompleted

Occurs when a drag-and-drop operation is ended. (Inherited from UIElement)

11

DropDownClosed

Occurs when the drop-down portion of the ComboBox closes.

12

DropDownOpened

Occurs when the drop-down portion of the ComboBox opens.

13

GotFocus

Occurs when a UIElement receives focus. (Inherited from UIElement)

14

Holding

Occurs when an otherwise unhandled Hold interaction occurs over the hit test area of this element. (Inherited from UIElement)

15

Intermediate

Fires when the state of a ToggleButton is switched to the indeterminate state. (Inherited from ToggleButton)

16

IsEnabledChanged

Occurs when the IsEnabled property changes. (Inherited from Control)

17

KeyDown

Occurs when a keyboard key is pressed while the UIElement has focus. (Inherited from UIElement)

18

KeyUp

Occurs when a keyboard key is released while the UIElement has focus. (Inherited from UIElement)

19

LostFocus

Occurs when a UIElement loses focus. (Inherited from UIElement)

20

ManipulationCompleted

Occurs when a manipulation on the UIElement is complete. (Inherited from UIElement)

21

ManipulationDelta

Occurs when the input device changes position during a manipulation. (Inherited from UIElement)

22

ManipulationInertiaStarting

Occurs when the input device loses contact with the UIElement object during a manipulation and inertia begins. (Inherited from UIElement)

23

ManipulationStarted

Occurs when an input device begins a manipulation on the UIElement. (Inherited from UIElement)

24

ManipulationStarting

Occurs when the manipulation processor is first created. (Inherited from UIElement)

25

SelectionChanged

Occurs when the text selection has changed.

26

SizeChanged

Occurs when either the ActualHeight or the ActualWidth property changes value on a FrameworkElement. (Inherited from FrameworkElement)

27

Unchecked

Occurs when a ToggleButton is unchecked. (Inherited from ToggleButton)

28

ValueChanged

Occurs when the range value changes. (Inherited from RangeBase)