Xaml-event-handling
XAML-イベント処理
XAMLのイベントの一般的な概念は、.NETやC ++などの他の一般的なプログラミング言語のイベントに似ています。 XAMLでは、すべてのコントロールが特定の目的でサブスクライブできるようにいくつかのイベントを公開します。
イベントが発生するたびに、アプリケーションに通知され、プログラムはそれらに反応できます。たとえば、ダイアログを閉じるために閉じるボタンが使用されます。
そのアプリケーションの要件に基づいてアプリケーションのさまざまな動作をサブスクライブできるイベントには多くの種類がありますが、最も一般的に使用されるイベントは、マウスやキーボードに関連するイベントです。
- クリック
- MouseDown
- MouseEnter
- MouseLeave
- MouseUp
- キーダウン
- キーアップ
この章では、特定のコントロールのイベントが、特定のイベントが発生したときにユーザーが何をしたいのかに応じて実装されるコードビハインドにどのようにリンクできるかを理解するために、いくつかの基本的で最も一般的に使用されるイベントを使用します発生します。
ボタンクリックイベントの簡単な例を見てみましょう。 以下に、いくつかのプロパティとClickイベント(Click = "OnClick")で作成および初期化されるButtonコントロールのXAML実装を示します。
<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 イベントが発生し、クリックへの応答として任意のタイプの動作を追加できます。 このボタンがクリックされたときにメッセージを表示する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!");
}
}
}
上記のコードをコンパイルして実行すると、次の出力が生成されます-
ボタンをクリックすると、クリック(OnClick)イベントが発生し、次のメッセージが表示されます。
次に、複数のイベントが処理される少し複雑な例を見てみましょう。
例
次の例には、テキストボックス内のテキストを操作するContextMenuを持つテキストボックスが含まれています。
次のXAMLコードは、Checked、Unchecked、Clickなどのいくつかのプロパティとイベントを持つTextBox、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;
}
}
}
}
上記のコードをコンパイルして実行すると、次の出力が生成されます-
上記のサンプルコードを実行し、他のイベントで実験することをお勧めします。
イベント
以下は、さまざまなコントロールで一般的に使用されるイベントです。
Sr.No. | Controls & Description |
---|---|
1 |
Checked ToggleButtonがチェックされたときに発生します。 (ToggleButtonから継承) |
2 |
Click ボタンコントロールがクリックされたときに発生します。 (ButtonBaseから継承) |
3 |
ContextMenuClosing 要素のコンテキストメニューが閉じられる直前に発生します。 (FrameworkElementから継承されます。) |
4 |
ContextMenuOpening 要素のコンテキストメニューが開かれたときに発生します。 (FrameworkElementから継承されます。) |
5 |
DataContextChanged FrameworkElement.DataContextプロパティの値が変更されたときに発生します。 (FrameworkElementから継承されます) |
6 |
DragEnter 入力システムが、この要素をターゲットとして基になるドラッグイベントを報告したときに発生します。 (UIElementから継承されます)。 |
7 |
DragLeave 入力システムが、この要素を起点として基本的なドラッグイベントを報告したときに発生します。 (UIElementから継承) |
8 |
DragOver 入力システムが潜在的なドロップターゲットとしてこの要素を持つ基本的なドラッグイベントを報告するときに発生します。 (UIElementから継承) |
9 |
DragStarting ドラッグ操作が開始されたときに発生します。 (UIElementから継承) |
10 |
DropCompleted ドラッグアンドドロップ操作が終了したときに発生します。 (UIElementから継承) |
11 |
DropDownClosed ComboBoxのドロップダウン部分が閉じたときに発生します。 |
12 |
DropDownOpened ComboBoxのドロップダウン部分が開いたときに発生します。 |
13 |
GotFocus UIElementがフォーカスを受け取ったときに発生します。 (UIElementから継承) |
14 |
Holding この要素のヒットテスト領域上で未処理のホールド操作が発生すると発生します。 (UIElementから継承) |
15 |
Intermediate ToggleButtonの状態が不確定状態に切り替えられたときに発生します。 (ToggleButtonから継承) |
16 |
IsEnabledChanged IsEnabledプロパティが変更されたときに発生します。 (Controlから継承) |
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 ActualHeightまたはActualWidthプロパティがFrameworkElementの値を変更したときに発生します。 (FrameworkElementから継承されます) |
27 |
Unchecked ToggleButtonのチェックが解除されたときに発生します。 (ToggleButtonから継承) |
28 |
ValueChanged 範囲の値が変更されたときに発生します。 (RangeBaseから継承) |