[WPF/Silverlight] メニュー項目を無効にする

スポンサーリンク

本TipsはWPFのみとなります。あらかじめご了承ください。

MenuItemクラスIsEnabledプロパティにFalseを設定すると、メニュー項目を無効にすることができます。

下記は[フォント]メニューの[太字]項目を無効にする例です。

メニューを無効にする例

XAMLの例

<DockPanel Name="Dock1">
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="ファイル(_F)">
            <MenuItem Command="New" />
            <MenuItem Command="Save"/>
            <Separator />
            <MenuItem Command="Close" />
        </MenuItem>
        <MenuItem Header="フォント(_F)">
            <MenuItem Header="太字" IsEnabled="False"/>
            <MenuItem Header="斜体" />
        </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 menuFont As New MenuItem
Dim menuFontBold As New MenuItem
Dim menuFontItalic As New MenuItem

mainMenu.VerticalAlignment = VerticalAlignment.Top

'[ファイル]メニュー項目の作成
menuFile.Header = "ファイル(_F)"
menuFileNew.Command = ApplicationCommands.[New]
menuFileSave.Command = ApplicationCommands.Save
menuFileEnd.Command = ApplicationCommands.Close
'[ファイル]メニューに[新規作成][保存][終了]項目を追加
menuFile.Items.Add(menuFileNew)
menuFile.Items.Add(menuFileSave)
menuFile.Items.Add(menuFileEnd)


'[フォント]メニュー項目の作成
menuFont.Header = "フォント(_F)"
menuFontBold.Header = "太字"
menuFontItalic.Header = "斜体"
'[フォント]メニューに[太字][斜体]項目を追加
menuFont.Items.Add(menuFontBold)
menuFont.Items.Add(menuFontItalic)

'[太字]メニューを無効にする
menuFontBold.IsEnabled = False

'メインメニューに[ファイル]メニューを追加
mainMenu.Items.Add(menuFile)
'メインメニューに[フォント]メニューを追加
mainMenu.Items.Add(menuFont)

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 menuFont = new MenuItem();
MenuItem menuFontBold = new MenuItem();
MenuItem menuFontItalic = 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);

// [フォント]メニュー項目の作成
menuFont.Header = "フォント(_F)";
menuFontBold.Header = "太字";
menuFontItalic.Header = "斜体";
// [フォント]メニューに[太字][斜体]項目を追加
menuFont.Items.Add(menuFontBold);
menuFont.Items.Add(menuFontItalic);

// [太字]メニューを無効にする
menuFontBold.IsEnabled = false;

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

this.Dock1.Children.Add(mainMenu);
タイトルとURLをコピーしました