XAML - Olay İşleme
XAML'deki genel olay kavramı, .NET ve C ++ gibi diğer popüler programlama dillerindeki olaylara benzer. XAML'de tüm denetimler, belirli amaçlarla abone olabilmeleri için bazı olayları ortaya çıkarır.
Bir olay meydana geldiğinde, uygulama bilgilendirilir ve program bunlara tepki verebilir, örneğin, bir diyaloğu kapatmak için kapat düğmeleri kullanılır.
Bir uygulamanın gereksinimlerine bağlı olarak bir uygulamanın farklı davranışları için abone olabilen birçok olay türü vardır, ancak en yaygın olarak kullanılan olaylar, fare ve klavye ile ilgili olanlardır.
- Click
- MouseDown
- MouseEnter
- MouseLeave
- MouseUp
- KeyDown
- KeyUp
Bu bölümde, belirli bir kontrol olayının, kullanıcının belirli bir olay olduğunda ne yapmak istediğine bağlı olarak davranışın uygulanacağı yerin arkasındaki koda nasıl bağlanabileceğini anlamak için bazı temel ve en sık kullanılan olayları kullanacağız. oluşur.
Basit bir düğme tıklama olayına göz atalım. Aşağıda, bazı özellikler ve bir Click olayı (Click = "OnClick") ile oluşturulan ve başlatılan Düğme kontrolü için XAML uygulaması verilmiştir.
<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>
Bu düğmeye her tıklandığında, bir OnClickolay ve herhangi bir davranış türünü Tıklamaya yanıt olarak ekleyebilirsiniz. Bu düğmeye tıklandığında bir mesaj gösterecek olan OnClick olay uygulamasına bir göz atalım.
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!");
}
}
}
Yukarıdaki kodu derleyip yürüttüğünüzde, aşağıdaki çıktıyı üretecektir -
Düğmeye tıkladığınızda, tıklama (OnClick) olayı tetiklenecek ve aşağıdaki mesaj görüntülenecektir.
Şimdi birden fazla olayın işlendiği biraz karmaşık bir örneğe bakalım.
Misal
Aşağıdaki örnek, metin kutusu içindeki metni işleyen ContextMenu içeren bir metin kutusu içerir.
Aşağıdaki XAML kodu, Checked, Unchecked ve Click gibi bazı özellik ve olaylarla bir TextBox, bir ContextMenu ve MenuItems oluşturur.
<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>
Burada, bir menü öğesi her işaretlendiğinde, işaretlenmediğinde veya tıklandığında tetiklenecek olan farklı olaylar için C #'daki uygulama yer almaktadır.
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;
}
}
}
}
Yukarıdaki kodu derleyip yürüttüğünüzde, aşağıdaki çıktıyı üretecektir -
Yukarıdaki örnek kodu çalıştırmanızı ve diğer bazı olayları denemenizi öneririz.
Etkinlikler
Sr.No. | Kontroller ve Açıklama |
---|---|
1 | Checked Bir ToggleButton işaretlendiğinde tetiklenir. (ToggleButton'dan devralındı) |
2 | Click Bir düğme kontrolüne tıklandığında gerçekleşir. (ButtonBase'den devralındı) |
3 | ContextMenuClosing Öğedeki herhangi bir bağlam menüsü kapatılmadan hemen önce gerçekleşir. (FrameworkElement'ten devralındı.) |
4 | ContextMenuOpening Öğedeki herhangi bir bağlam menüsü açıldığında gerçekleşir. (FrameworkElement'ten devralındı.) |
5 | DataContextChanged FrameworkElement.DataContext özelliğinin değeri değiştiğinde gerçekleşir. (FrameworkElement'ten devralındı) |
6 | DragEnter Giriş sistemi, hedef olarak bu öğeyle temeldeki bir sürükleme olayını bildirdiğinde gerçekleşir. (UIElement'ten devralındı). |
7 | DragLeave Giriş sistemi, başlangıç noktası olarak bu öğe ile temeldeki bir sürükleme olayını bildirdiğinde gerçekleşir. (UIElement'ten devralındı) |
8 | DragOver Giriş sistemi, potansiyel bırakma hedefi olarak bu öğeyle temelde yatan bir sürükleme olayını bildirdiğinde gerçekleşir. (UIElement'ten devralındı) |
9 | DragStarting Bir sürükleme işlemi başlatıldığında gerçekleşir. (UIElement'ten devralındı) |
10 | DropCompleted Bir sürükle ve bırak işlemi sona erdiğinde ortaya çıkar. (UIElement'ten devralındı) |
11 | DropDownClosed ComboBox öğesinin açılır bölümü kapandığında gerçekleşir. |
12 | DropDownOpened ComboBox öğesinin açılır bölümü açıldığında gerçekleşir. |
13 | GotFocus Bir UIElement odak aldığında oluşur. (UIElement'ten devralındı) |
14 | Holding Bu öğenin vuruş testi alanı üzerinde başka türlü işlenmeyen bir Hold etkileşimi gerçekleştiğinde oluşur. (UIElement'ten devralındı) |
15 | Intermediate Bir ToggleButton durumu belirsiz duruma geçtiğinde ateşlenir. (ToggleButton'dan devralındı) |
16 | IsEnabledChanged IsEnabled özelliği değiştiğinde gerçekleşir. (Control'den devralındı) |
17 | KeyDown UIElement odaklanmışken bir klavye tuşuna basıldığında oluşur. (UIElement'ten devralındı) |
18 | KeyUp UIElement odak varken bir klavye tuşu bırakıldığında oluşur. (UIElement'ten devralındı) |
19 | LostFocus UIElement odağı kaybettiğinde ortaya çıkar. (UIElement'ten devralındı) |
20 | ManipulationCompleted UIElement üzerinde bir manipülasyon tamamlandığında oluşur. (UIElement'ten devralındı) |
21 | ManipulationDelta Bir manipülasyon sırasında giriş cihazı konum değiştirdiğinde oluşur. (UIElement'ten devralındı) |
22 | ManipulationInertiaStarting Giriş cihazı, bir manipülasyon sırasında UIElement nesnesiyle teması kaybettiğinde ve eylemsizlik başladığında oluşur. (UIElement'ten devralındı) |
23 | ManipulationStarted Bir giriş cihazı UIElement üzerinde bir manipülasyon başlattığında oluşur. (UIElement'ten devralındı) |
24 | ManipulationStarting Manipülasyon işlemcisi ilk oluşturulduğunda gerçekleşir. (UIElement'ten devralındı) |
25 | SelectionChanged Metin seçimi değiştiğinde gerçekleşir. |
26 | SizeChanged ActualHeight veya ActualWidth özelliği bir FrameworkElement üzerindeki değeri değiştirdiğinde gerçekleşir. (FrameworkElement'ten devralındı) |
27 | Unchecked Bir ToggleButton işaretli olmadığında ortaya çıkar. (ToggleButton'dan devralındı) |
28 | ValueChanged Aralık değeri değiştiğinde gerçekleşir. (RangeBase'den devralındı) |