SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――メニュー機能

(10) MenuコントロールとContextMenuコントロール

ダウンロード Menu_WPF_VB.zip (71.1 KB)
ダウンロード Menu_WPF_CS.zip (65.4 KB)

06.アイコンを設定する

 メニューにアイコンを設定するには MenuItemクラスIconプロパティを使用します。

 IconプロパティにはImageクラスのインスタンスを設定します。

 下記はメニュー項目にアイコンを設定する例です。

アイコンを設定する例
アイコンを設定する例
XAMLの例
<DockPanel Name="Dock1">
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="ファイル(_F)" Name="MenuItem1">
            <MenuItem Command="New">
                <MenuItem.Icon>
                    <Image Source="Images/NewDocument.png" Width="16" Height="16" />
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Command="Save">
                <MenuItem.Icon>
                    <Image Source="Images/Save.png" Width="16" Height="16" />
                </MenuItem.Icon>
            </MenuItem>
            <Separator />
            <MenuItem Command="Close" />
        </MenuItem>
        <MenuItem Header="編集(_E)">
            <MenuItem Command="Cut">
                <MenuItem.Icon>
                    <Image Source="Images/Cut.png" Width="16" Height="16" />
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Command="Copy">
                <MenuItem.Icon>
                    <Image Source="Images/Copy.png" Width="16" Height="16" />
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem Command="Paste">
                <MenuItem.Icon>
                    <Image Source="Images/Paste.png" Width="16" Height="16" />
                </MenuItem.Icon>
            </MenuItem>
        </MenuItem>
    </Menu>
    <TextBox Name="TextBox1" TextWrapping="Wrap" 
             AcceptsReturn="True"
             VerticalScrollBarVisibility="Visible" />                
</DockPanel>
VBの例
'XAMLではなくコードでメニューを作成する場合は下記のようにします

Dim mainMenu As New Controls.Menu
Dim menuFile As New MenuItem()
Dim menuFileNew As New MenuItem()
Dim menuFileSave As New MenuItem()
Dim menuFileEnd As New MenuItem
Dim menuEdit As New MenuItem
Dim menuEditCopy As New MenuItem
Dim menuEditCut As New MenuItem
Dim menuEditPaste As New MenuItem
Dim menuEditSearchReplace As New MenuItem
Dim menuEditSearch As New MenuItem
Dim menuEditReplace As New MenuItem

mainMenu.VerticalAlignment = VerticalAlignment.Top

'[ファイル]メニュー項目の作成
menuFile.Header = "ファイル"
menuFileNew.Command = ApplicationCommands.[New]
menuFileSave.Command = ApplicationCommands.Save
menuFileEnd.Command = ApplicationCommands.Close
'[ファイル]メニューに[新規作成][保存][終了]項目を追加
menuFile.Items.Add(menuFileNew)
menuFile.Items.Add(menuFileSave)
menuFile.Items.Add(menuFileEnd)
'[新規作成]メニューのアイコンを設定
Dim iconNew As New Image()
iconNew.Source = New BitmapImage(New Uri("Images/NewDocument.png", UriKind.Relative))
iconNew.Width = 16 : iconNew.Height = 16
menuFileNew.Icon = iconNew
'[保存]メニューのアイコンを設定
Dim iconSave As New Image()
iconSave.Source = New BitmapImage(New Uri("Images/Save.png", UriKind.Relative))
iconSave.Width = 16 : iconSave.Height = 16
menuFileSave.Icon = iconSave


'[編集]メニュー項目の作成
menuEdit.Header = "編集"
menuEditCut.Command = ApplicationCommands.Cut
menuEditCopy.Command = ApplicationCommands.Copy
menuEditPaste.Command = ApplicationCommands.Paste
'[編集]メニューに[切り取り][コピー][貼り付け][検索と置換]項目を追加
menuEdit.Items.Add(menuEditCut)
menuEdit.Items.Add(menuEditCopy)
menuEdit.Items.Add(menuEditPaste)
'[切り取り]メニューのアイコンを設定
Dim iconCut As New Image()
iconCut.Source = New BitmapImage(New Uri("Images/Cut.png", UriKind.Relative))
iconCut.Width = 16 : iconSave.Height = 16
menuEditCut.Icon = iconCut
'[コピー]]メニューのアイコンを設定
Dim iconCopy As New Image()
iconCopy.Source = New BitmapImage(New Uri("Images/Copy.png", UriKind.Relative))
iconCopy.Width = 16 : iconCopy.Height = 16
menuEditCopy.Icon = iconCopy
'[貼り付け]メニューのアイコンを設定
Dim iconPaste As New Image()
iconPaste.Source = New BitmapImage(New Uri("Images/Paste.png", UriKind.Relative))
iconPaste.Width = 16 : iconPaste.Height = 16
menuEditPaste.Icon = iconPaste

'メインメニューに[ファイル]メニューを追加
mainMenu.Items.Add(menuFile)
'メインメニューに[編集]メニューを追加
mainMenu.Items.Add(menuEdit)

Me.Dock1.Children.Add(mainMenu)
C#の例
// XAMLではなくコードでメニューを作成する場合は下記のようにします

System.Windows.Controls.Menu mainMenu =
    new System.Windows.Controls.Menu();
MenuItem menuFile = new MenuItem();
MenuItem menuFileNew = new MenuItem();
MenuItem menuFileSave = new MenuItem();
MenuItem menuFileEnd = new MenuItem();
MenuItem menuEdit = new MenuItem();
MenuItem menuEditCopy = new MenuItem();
MenuItem menuEditCut = new MenuItem();
MenuItem menuEditPaste = new MenuItem();

mainMenu.VerticalAlignment = VerticalAlignment.Top;

// [ファイル]メニュー項目の作成
menuFile.Header = "ファイル";
menuFileNew.Command = ApplicationCommands.New;
menuFileSave.Command = ApplicationCommands.Save;
menuFileEnd.Command = ApplicationCommands.Close;
// [ファイル]メニューに[新規作成][保存][終了]項目を追加
menuFile.Items.Add(menuFileNew);
menuFile.Items.Add(menuFileSave);
menuFile.Items.Add(menuFileEnd);
// [新規作成]メニューのアイコンを設定
Image iconNew = new Image();
iconNew.Source = new BitmapImage(new Uri("Images/NewDocument.png", UriKind.Relative));
iconNew.Width = 16; iconNew.Height = 16;
menuFileNew.Icon = iconNew;
// [保存]メニューのアイコンを設定
Image iconSave = new Image();
iconSave.Source = new BitmapImage(new Uri("Images/Save.png", UriKind.Relative));
iconSave.Width = 16; iconSave.Height = 16;
menuFileSave.Icon = iconSave;


// [編集]メニュー項目の作成
menuEdit.Header = "編集";
menuEditCut.Command = ApplicationCommands.Cut;
menuEditCopy.Command = ApplicationCommands.Copy;
menuEditPaste.Command = ApplicationCommands.Paste;
// [編集]メニューに[切り取り][コピー][貼り付け]項目を追加
menuEdit.Items.Add(menuEditCut);
menuEdit.Items.Add(menuEditCopy);
menuEdit.Items.Add(menuEditPaste);
// [切り取り]メニューのアイコンを設定
Image iconCut = new Image();
iconCut.Source = new BitmapImage(new Uri("Images/Cut.png", UriKind.Relative));
iconCut.Width = 16; iconSave.Height = 16;
menuEditCut.Icon = iconCut;
// [コピー]]メニューのアイコンを設定
Image iconCopy = new Image();
iconCopy.Source = new BitmapImage(new Uri("Images/Copy.png", UriKind.Relative));
iconCopy.Width = 16; iconCopy.Height = 16;
menuEditCopy.Icon = iconCopy;
// [貼り付け]メニューのアイコンを設定
Image iconPaste = new Image();
iconPaste.Source = new BitmapImage(new Uri("Images/Paste.png", UriKind.Relative));
iconPaste.Width = 16; iconPaste.Height = 16;
menuEditPaste.Icon = iconPaste;

// メインメニューに[ファイル]メニューを追加
mainMenu.Items.Add(menuFile);
// メインメニューに[編集]メニューを追加
mainMenu.Items.Add(menuEdit);

this.Dock1.Children.Add(mainMenu);
ポイント

 メニューにアイコンを設定するにはMenuItemクラスのIconプロパティを使用する。

 IconプロパティにはImageクラスのインスタンスを設定する。

次のページ
07.チェックマークを付ける

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5769 2011/03/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー