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