Wpf-menu

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

WPF-メニュー

メニューは、コマンドおよびイベントハンドラーに関連付けられた要素を階層的に整理できるコントロールです。 メニューはItemsControlであるため、文字列、画像、パネルなどの任意のオブジェクトタイプのコレクションを含めることができます。 メニュークラスの階層的な継承は次のとおりです-

メニューの階層

以下は、Menuクラスで一般的に使用されるプロパティです

以下に、Menuの最も一般的に使用されるプロパティを示します。

Sr.No. Property & Description
1

Background

コントロールの背景を記述するブラシを取得または設定します。 (Controlから継承されます。)

2

BindingGroup

要素に使用されるBindingGroupを取得または設定します。 (FrameworkElementから継承されます。)

3

BitmapEffect

廃止されました。 この要素のレンダリングされたコンテンツに直接適用されるビットマップ効果を取得または設定します。 これは依存関係プロパティです。 (UIElementから継承されます。)

4

BorderThickness

コントロールの境界線の太さを取得または設定します。 (Controlから継承されます。)

5

ContextMenu

この要素内からユーザーインターフェイス(UI)を介してコンテキストメニューが要求されるたびに表示されるコンテキストメニュー要素を取得または設定します。 (FrameworkElementから継承されます。)

6

Effect

UIElementに適用するビットマップ効果を取得または設定します。 これは依存関係プロパティです。 (UIElementから継承されます。)

7

Height

要素の推奨される高さを取得または設定します。 (FrameworkElementから継承されます。)

8

IsMainMenu

このメニューがメインメニューのアクティブ化通知を受信するかどうかを示す値を取得または設定します。

9

Items

ItemsControlのコンテンツの生成に使用されるコレクションを取得します。 (ItemsControlから継承されます。)

10

ItemsPanel

アイテムのレイアウトを制御するパネルを定義するテンプレートを取得または設定します。 (ItemsControlから継承されます。)

11

ItemsSource

ItemsControlのコンテンツの生成に使用されるコレクションを取得または設定します。 (ItemsControlから継承されます。)

12

ItemStringFormat

アイテムが文字列として表示される場合、ItemsControlでアイテムをフォーマットする方法を指定する複合文字列を取得または設定します。 (ItemsControlから継承されます。)

13

ItemTemplate

各項目の表示に使用されるDataTemplateを取得または設定します。 (ItemsControlから継承されます。)

14

ToolTip

ユーザーインターフェイス(UI)でこの要素に対して表示されるツールヒントオブジェクトを取得または設定します。 (FrameworkElementから継承されます。)

15

VerticalContentAlignment

コントロールのコンテンツの垂直方向の配置を取得または設定します。 (Controlから継承されます。)

16

Width

要素の幅を取得または設定します。 (FrameworkElementから継承されます。)

メニュークラスで一般的に使用されるイベント

以下に、Menuの最も一般的に使用されるイベントを示します。

Sr.No. Event & Description
1

ContextMenuClosing

要素のコンテキストメニューが閉じられる直前に発生します。 (FrameworkElementから継承されます。)

2

ContextMenuOpening

要素のコンテキストメニューが開かれたときに発生します。 (FrameworkElementから継承されます。)

3

KeyDown

この要素にフォーカスがあるときにキーが押されると発生します。 (UIElementから継承されます。)

4

KeyUP

この要素にフォーカスがあるときにキーが離されると発生します。 (UIElementから継承されます。)

5

ToolTipClosing

要素のツールチップが閉じられる直前に発生します。 (FrameworkElementから継承されます。)

6

ToolTipOpening

要素のツールチップが開かれたときに発生します。 (FrameworkElementから継承されます。)

7

TouchDown

指がこの要素上にあるときに指が画面に触れると発生します。 (UIElementから継承されます。)

8

TouchEnter

この要素の境界の外側から内側にタッチが移動すると発生します。 (UIElementから継承されます。)

9

TouchLeave

この要素の境界の内側から外側にタッチが移動すると発生します。 (UIElementから継承されます。)

10

TouchMove

指がこの要素上にあるときに指が画面上を移動すると発生します。 (UIElementから継承されます。)

11

TouchUp

指がこの要素上にあるときに指が画面から離れると発生します。 (UIElementから継承されます。)

  • WPFMenuControl という名前の新しいWPFプロジェクトを作成しましょう。
  • ツールボックスからデザインウィンドウにメニューコントロールをドラッグします。
  • 次の例には、いくつかのメニュー項目を持つ3つのメニューオプションが含まれています。 ユーザーがアイテムをクリックすると、プログラムはタイトルを更新します。 ここにXAMLコードがあります-
<Window x:Class = "WPFMenuControl.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:WPFMenuControl"
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604">

   <Grid>
      <Menu HorizontalAlignment = "Left" VerticalAlignment = "Top" Width = "517">

         <MenuItem Header = "File">
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click"/>

            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click"/>

            <Separator HorizontalAlignment = "Left" Width = "140"/>

            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click"/>
         </MenuItem>

         <MenuItem Header = "Edit">
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click1"/>
            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click1"/>
            <Separator HorizontalAlignment = "Left" Width = "140"/>
            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click1"/>
         </MenuItem>

         <MenuItem Header = "View">
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click2"/>
            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click2"/>
            <Separator HorizontalAlignment = "Left" Width = "140"/>
            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140"
               Click = "MenuItem_Click2"/>
         </MenuItem>

      </Menu>
   </Grid>

</Window>

イベントは次のとおりです。* C#での実装*。

using System.Windows;
using System.Windows.Controls;

namespace WPFMenuControl {
  ///<summary>
     ///Interaction logic for MainWindow.xaml
  ///</summary>

   public partial class MainWindow : Window {

      public MainWindow() {
         InitializeComponent();
      }

      private void MenuItem_Click(object sender, RoutedEventArgs e) {
         MenuItem item = sender as MenuItem;
         this.Title = "File: " + item.Header;
      }

      private void MenuItem_Click1(object sender, RoutedEventArgs e) {
         MenuItem item = sender as MenuItem;
         this.Title = "Edit: " + item.Header;
      }

      private void MenuItem_Click2(object sender, RoutedEventArgs e) {
         MenuItem item = sender as MenuItem;
         this.Title = "View: " + item.Header;
      }

   }
}

上記のコードをコンパイルして実行すると、次の出力が生成されます-

メニューの出力

上記のサンプルコードを実行し、Menuクラスの他のプロパティとイベントを試すことをお勧めします。