Wpf-contextmenu

提供:Dev Guides
移動先:案内検索

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の他のプロパティとイベントを試すことをお勧めします。