Wpf-contextmenu
WPF-コンテキストメニュー
ContextMenuは、コントロールがコントロールのコンテキストに固有の機能を公開できるようにするポップアップメニューです。 この要素内からユーザーインターフェイスを介してコンテキストメニューが要求されるたびに表示されます。 ContextMenuクラスの階層的な継承は次のとおりです-
ContextMenuの一般的に使用されるプロパティ
以下に、ContextMenuの最も一般的に使用されるプロパティを示します。
Sr.No. | Property & Description |
---|---|
1 |
Background コントロールの背景を提供するブラシを取得または設定します。 (Controlから継承) |
2 |
BorderThickness コントロールの境界線の太さを取得または設定します。 (Controlから継承) |
3 |
ContextMenu この要素内からユーザーインターフェイス(UI)を介してコンテキストメニューが要求されるたびに表示されるコンテキストメニュー要素を取得または設定します。 (FrameworkElementから継承されます。) |
4 |
FontFamily コントロール内のテキストの表示に使用されるフォントを取得または設定します。 (Controlから継承) |
5 |
FontSize このコントロール内のテキストのサイズを取得または設定します。 (Controlから継承) |
6 |
FontStyle テキストがレンダリングされるスタイルを取得または設定します。 (Controlから継承) |
7 |
FontWeight 指定したフォントの太さを取得または設定します。 (Controlから継承) |
8 |
Foreground 前景色を説明するブラシを取得または設定します。 (Controlから継承) |
9 |
GroupStyle グループの各レベルの外観を定義するGroupStyleオブジェクトのコレクションを取得します。 (ItemsControlから継承) |
10 |
HasItems ItemsControlに項目が含まれているかどうかを示す値を取得します。 (ItemsControlから継承されます。) |
11 |
Height FrameworkElementの推奨される高さを取得または設定します。 (FrameworkElementから継承されます) |
12 |
HorizontalAlignment FrameworkElementがパネルやアイテムコントロールなどのレイアウトの親で構成されるときにFrameworkElementに適用される水平方向の配置特性を取得または設定します。 (FrameworkElementから継承されます) |
13 |
IsFocused この要素に論理フォーカスがあるかどうかを決定する値を取得します。 これは依存関係プロパティです。 (UIElementから継承されます。) |
14 |
IsOpen ContextMenuが表示されるかどうかを示す値を取得または設定します。 |
15 |
IsEnabled ユーザーがコントロールを操作できるかどうかを示す値を取得または設定します。 (Controlから継承) |
16 |
ItemsSource ItemsControlのコンテンツの生成に使用されるオブジェクトソースを取得または設定します。 (ItemsControlから継承) |
17 |
Margin FrameworkElementの外側のマージンを取得または設定します。 (FrameworkElementから継承されます) |
18 |
Name オブジェクトの識別名を取得または設定します。 XAMLプロセッサがXAMLマークアップからオブジェクトツリーを作成するとき、ランタイムコードはこの名前でXAMLで宣言されたオブジェクトを参照できます。 (FrameworkElementから継承されます) |
19 |
Opacity オブジェクトの不透明度を取得または設定します。 (UIElementから継承) |
20 |
Style レイアウトおよびレンダリング中にこのオブジェクトに適用されるインスタンススタイルを取得または設定します。 (FrameworkElementから継承されます) |
21 |
VerticalAlignment FrameworkElementがパネルや項目コントロールなどの親オブジェクトで構成されるときにFrameworkElementに適用される垂直方向の配置特性を取得または設定します。 (FrameworkElementから継承されます) |
22 |
Width FrameworkElementの幅を取得または設定します。 (FrameworkElementから継承されます) |
ContextMenuの一般的に使用されるメソッド
以下に、ContextMenuの最も一般的に使用されるメソッドを示します。
Sr.No. | Method & Description |
---|---|
1 |
AddChild 指定されたオブジェクトをItemsControlオブジェクトの子として追加します。 (ItemsControlから継承されます。) |
2 |
Arrange 子オブジェクトを配置し、UIElementのサイズを決定します。 子要素のカスタムレイアウトを実装する親オブジェクトは、レイアウトオーバーライド実装からこのメソッドを呼び出して、再帰的なレイアウト更新を形成する必要があります。 (UIElementから継承) |
3 |
FindName 指定された識別子名を持つオブジェクトを取得します。 (FrameworkElementから継承されます) |
4 |
Focus コントロールにフォーカスを設定しようとします。 (Controlから継承) |
5 |
GetValue DependencyObjectから依存関係プロパティの現在の有効値を返します。 (DependencyObjectから継承) |
6 |
IsItemItsOwnContainer 指定されたアイテムがそれ自体のコンテナである(またはその資格がある)かどうかを決定します。 (ItemsControlから継承されます。) |
7 |
OnDragEnter DragEnterイベントが発生する前に呼び出されます。 (Controlから継承) |
8 |
OnDragLeave DragLeaveイベントが発生する前に呼び出されます。 (Controlから継承) |
9 |
OnDragOver DragOverイベントが発生する前に呼び出されます。 (Controlから継承) |
10 |
OnDrop Dropイベントが発生する前に呼び出されます。 (Controlから継承) |
11 |
OnContextMenuOpening 未処理のContextMenuClosingルーティングイベントがそのルートでこのクラスに到達するたびに呼び出されます。 このメソッドを実装して、このイベントのクラス処理を追加します。 (FrameworkElementから継承されます。) |
12 |
OnItemsChanged Itemsプロパティが変更されると呼び出されます。 (ItemsControlから継承されます。) |
13 |
OnLostFocus LostFocusイベントが発生する前に呼び出されます。 (Controlから継承) |
14 |
ReadLocalValue ローカル値が設定されている場合、依存関係プロパティのローカル値を返します。 (DependencyObjectから継承) |
15 |
SetBinding 提供されたバインディングオブジェクトを使用して、FrameworkElementにバインディングをアタッチします。 (FrameworkElementから継承されます) |
16 |
SetValue DependencyObjectの依存関係プロパティのローカル値を設定します。 (DependencyObjectから継承) |
ContextMenuの一般的に使用されるイベント
以下に、ContextMenuの最も一般的に使用されるイベントを示します。
Sr.No. | Event & Description |
---|---|
1 |
Closed ContextMenuの特定のインスタンスが閉じたときに発生します。 |
2 |
ContextMenuClosing 要素のコンテキストメニューが閉じられる直前に発生します。 (FrameworkElementから継承されます。) |
3 |
ContextMenuOpening 要素のコンテキストメニューが開かれたときに発生します。 (FrameworkElementから継承されます。) |
4 |
DataContextChanged この要素のデータコンテキストが変更されたときに発生します。 (FrameworkElementから継承されます。) |
5 |
DragEnter 入力システムが、この要素をターゲットとして基になるドラッグイベントを報告したときに発生します。 (UIElementから継承) |
6 |
DragLeave 入力システムが、この要素を起点として基本的なドラッグイベントを報告したときに発生します。 (UIElementから継承) |
7 |
DragOver 入力システムが潜在的なドロップターゲットとしてこの要素を持つ基本的なドラッグイベントを報告するときに発生します。 (UIElementから継承) |
8 |
Drop 入力システムが、この要素をドロップターゲットとして基になるドロップイベントを報告したときに発生します。 (UIElementから継承) |
9 |
GotFocus UIElementがフォーカスを受け取ったときに発生します。 (UIElementから継承) |
10 |
IsEnabledChanged IsEnabledプロパティが変更されたときに発生します。 (Controlから継承) |
11 |
KeyDown UIElementにフォーカスがあるときにキーボードキーが押されると発生します。 (UIElementから継承) |
12 |
KeyUp UIElementにフォーカスがあるときにキーボードキーが離されると発生します。 (UIElementから継承) |
13 |
LostFocus UIElementがフォーカスを失ったときに発生します。 (UIElementから継承) |
例
- WPFContextMenuControl という名前の新しいWPFプロジェクトを作成しましょう。
- ツールボックスからテキストボックスをドラッグし、プロパティウィンドウで次のプロパティを設定します。
Property | Value |
---|---|
Name | textBox1 |
Text | Hi, this is WPF tutorial |
TextWraping | Wrap |
Width | 300 |
- 次に、テキストボックスおよびContextMenuのXAMLタグが表示されるXAMLウィンドウに切り替えます。
- 次のXAMLコードに示すように、いくつかのプロパティ、メニュー項目、およびチェック済みイベントと未チェックイベントを追加します。
次の例には、テキストボックス内のテキストを操作するContextMenuを持つテキストボックスが含まれています。 次のXAMLコードは、いくつかのプロパティとイベントのコンテキストメニューを持つテキストボックスを作成します。
<Window x:Class = "WPFContextMenuControl.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local = "clr-namespace:WPFContextMenuControl"
mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604">
<Grid>
<TextBox x:Name = "textBox1" HorizontalAlignment = "Left" Height = "178"
Margin = "92,61,0,0" TextWrapping = "Wrap" Text = "Hi, this is WPF tutorial"
VerticalAlignment = "Top" Width = "306">
<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.Windows;
namespace WPFContextMenuControl {
///<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;
}
}
}
}
上記のコードをコンパイルして実行すると、次のウィンドウが生成されます-
上記のサンプルコードを実行し、ContextMenuの他のプロパティとイベントを試すことをお勧めします。