XAML - इवेंट हैंडलिंग
XAML में घटनाओं की सामान्य अवधारणा .NET और C ++ जैसी अन्य लोकप्रिय प्रोग्रामिंग भाषाओं की घटनाओं के समान है। एक्सएएमएल में, सभी नियंत्रण कुछ घटनाओं को उजागर करते हैं ताकि उन्हें विशिष्ट उद्देश्यों के लिए सब्सक्राइब किया जा सके।
जब भी कोई घटना होती है, तो आवेदन को अधिसूचित किया जाएगा और कार्यक्रम उन पर प्रतिक्रिया कर सकता है, जैसे, किसी संवाद को बंद करने के लिए बंद बटन का उपयोग किया जाता है।
कई प्रकार की घटनाएँ होती हैं जिन्हें उस एप्लिकेशन की आवश्यकता के आधार पर किसी एप्लिकेशन के विभिन्न व्यवहारों के लिए सब्सक्राइब किया जा सकता है, लेकिन सबसे अधिक उपयोग की जाने वाली घटनाएं वे हैं जो माउस और कीबोर्ड से संबंधित हैं, जैसे,
- Click
- MouseDown
- MouseEnter
- MouseLeave
- MouseUp
- KeyDown
- KeyUp
इस अध्याय में, हम यह समझने के लिए कुछ मूल और सबसे अधिक इस्तेमाल की जाने वाली घटनाओं का उपयोग करेंगे कि किसी विशिष्ट नियंत्रण की घटना को उस कोड से कैसे जोड़ा जा सकता है, जहां उपयोगकर्ता किसी विशिष्ट घटना के दौरान क्या करना चाहता है, उसके आधार पर व्यवहार को लागू किया जाएगा। होता है।
चलो बटन क्लिक घटना के एक सरल उदाहरण पर एक नज़र डालते हैं। नीचे दिए गए बटन नियंत्रण के लिए एक्सएएमएल कार्यान्वयन है जो कुछ गुणों और एक क्लिक इवेंट (क्लिक = "ऑनक्लिक") के साथ बनाया और शुरू किया गया है।
<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>
जब भी इस बटन पर क्लिक किया जाता है, यह एक आग लगा देगा OnClickईवेंट और आप क्लिक के जवाब के रूप में किसी भी प्रकार का व्यवहार जोड़ सकते हैं। आइए ऑनक्लिक ईवेंट कार्यान्वयन पर एक नज़र डालें जो इस बटन को क्लिक करने पर एक संदेश दिखाएगा।
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!");
}
}
}
जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं, तो यह निम्नलिखित आउटपुट का उत्पादन करेगा -
जब आप बटन पर क्लिक करते हैं, तो क्लिक (ऑनक्लिक) ईवेंट को निकाल दिया जाएगा और निम्न संदेश प्रदर्शित होगा।
अब आइए थोड़ा सा जटिल उदाहरण देखें जहां कई घटनाओं को नियंत्रित किया जाता है।
उदाहरण
निम्न उदाहरण में ContextMenu के साथ एक टेक्स्टबॉक्स होता है जो टेक्स्टबॉक्स के भीतर पाठ को हेरफेर करता है।
निम्न XAML कोड एक टेक्स्टबॉक्स, एक ContextMenu, और MenuItems बनाता है जिसमें कुछ गुण और घटनाएँ जैसे जाँच, अनियंत्रित और क्लिक होती हैं।
<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>
यहाँ विभिन्न घटनाओं के लिए C # में कार्यान्वयन है जिसे जब भी मेनू आइटम की जाँच, अनियंत्रित या क्लिक किया जाता है तो निकाल दिया जाएगा।
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;
}
}
}
}
जब आप उपरोक्त कोड को संकलित और निष्पादित करते हैं, तो यह निम्नलिखित आउटपुट का उत्पादन करेगा -
हम आपको उपरोक्त उदाहरण कोड निष्पादित करने और कुछ अन्य घटनाओं के साथ प्रयोग करने की सलाह देते हैं।
आयोजन
अनु क्रमांक। | नियंत्रण और विवरण |
---|---|
1 | Checked जब एक टॉगलबटन की जाँच की जाती है तो आग लग जाती है। (टॉगलबटन से विरासत में मिला) |
2 | Click तब होता है जब एक बटन नियंत्रण क्लिक किया जाता है। (ButtonBase से निहित) |
3 | ContextMenuClosing तत्व के किसी भी संदर्भ मेनू से ठीक पहले होता है। (फ्रेमवर्क से इंहेरिट किया गया।) |
4 | ContextMenuOpening तब होता है जब तत्व पर कोई संदर्भ मेनू खोला जाता है। (फ्रेमवर्क से इंहेरिट किया गया।) |
5 | DataContextChanged तब होता है जब FrameworkElement.ataContext की संपत्ति का मान बदलता है। (फ्रेमवर्क से विरासत में मिला) |
6 | DragEnter तब होता है जब इनपुट सिस्टम इस तत्व के साथ एक अंतर्निहित ड्रैग इवेंट को लक्ष्य के रूप में रिपोर्ट करता है। (UIElement से निहित)। |
7 | DragLeave तब होता है जब इनपुट सिस्टम मूल के रूप में इस तत्व के साथ एक अंतर्निहित ड्रैग घटना की रिपोर्ट करता है। (UIElement से निहित) |
8 | DragOver तब होता है जब इनपुट सिस्टम संभावित ड्रॉप लक्ष्य के रूप में इस तत्व के साथ एक अंतर्निहित ड्रैग घटना की रिपोर्ट करता है। (UIElement से निहित) |
9 | DragStarting तब होता है जब एक ड्रैग ऑपरेशन शुरू किया जाता है। (UIElement से निहित) |
10 | DropCompleted तब होता है जब एक ड्रैग-एंड-ड्रॉप ऑपरेशन समाप्त हो जाता है। (UIElement से निहित) |
1 1 | DropDownClosed तब होता है जब कॉम्बो बॉक्स का ड्रॉप-डाउन भाग बंद हो जाता है। |
12 | DropDownOpened तब होता है जब कॉम्बो बॉक्स का ड्रॉप-डाउन भाग खुलता है। |
13 | GotFocus तब होता है जब एक UIElement फोकस प्राप्त करता है। (UIElement से निहित) |
14 | Holding तब होता है जब इस तत्व के हिट परीक्षण क्षेत्र पर अन्यथा अनहेल्ड होल्ड इंटरैक्शन होता है। (UIElement से निहित) |
15 | Intermediate आग जब टॉगलबटन की स्थिति अनिश्चित स्थिति में बदल जाती है। (टॉगलबटन से विरासत में मिला) |
16 | IsEnabledChanged तब होता है जब IsEnabled संपत्ति में परिवर्तन होता है। (नियंत्रण से आच्छादित) |
17 | KeyDown तब होता है जब एक कीबोर्ड कुंजी दबाया जाता है जबकि UIElement फोकस होता है। (UIElement से निहित) |
18 | KeyUp तब होता है जब एक कीबोर्ड कुंजी जारी की जाती है जबकि UIElement फोकस होता है। (UIElement से निहित) |
19 | LostFocus तब होता है जब एक UIElement फोकस खो देता है। (UIElement से निहित) |
20 | ManipulationCompleted तब होता है जब UIElement पर एक हेरफेर पूरा हो गया है। (UIElement से निहित) |
21 | ManipulationDelta तब होता है जब हेरफेर के दौरान इनपुट डिवाइस स्थिति बदलता है। (UIElement से निहित) |
22 | ManipulationInertiaStarting तब होता है जब इनपुट डिवाइस एक हेरफेर के दौरान UIElement ऑब्जेक्ट के साथ संपर्क खो देता है और जड़ता शुरू होती है। (UIElement से निहित) |
23 | ManipulationStarted तब होता है जब एक इनपुट डिवाइस UIElement पर एक हेरफेर शुरू करता है। (UIElement से निहित) |
24 | ManipulationStarting तब होता है जब हेरफेर प्रोसेसर पहली बार बनाया जाता है। (UIElement से निहित) |
25 | SelectionChanged तब होता है जब पाठ चयन बदल गया है। |
26 | SizeChanged तब होता है जब या तो हाइटहाइट या एक्चुअलहेड प्रॉपर्टी एक फ्रेमवर्क पर वैल्यू में बदलाव करता है। (फ्रेमवर्क से विरासत में मिला) |
27 | Unchecked तब होता है जब एक टॉगलबटन को अनियंत्रित किया जाता है। (टॉगलबटन से विरासत में मिला) |
28 | ValueChanged तब होता है जब सीमा मूल्य बदल जाता है। (रेंजबेस से विहित) |