MenuAction 类

[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]

上下文项,表示该设计器中将采用的操作。

继承层次结构

System.Object
  Microsoft.Windows.Design.Interaction.MenuBase
    Microsoft.Windows.Design.Interaction.MenuAction

命名空间:  Microsoft.Windows.Design.Interaction
程序集:  Microsoft.Windows.Design.Interaction(在 Microsoft.Windows.Design.Interaction.dll 中)

语法

声明
Public Class MenuAction _
    Inherits MenuBase
public class MenuAction : MenuBase
public ref class MenuAction : public MenuBase
type MenuAction =  
    class
        inherit MenuBase
    end
public class MenuAction extends MenuBase

MenuAction 类型公开以下成员。

构造函数

  名称 说明
公共方法 MenuAction 初始化 MenuAction 类的新实例。

页首

属性

  名称 说明
公共属性 Checkable 获取或设置一个值指示是否菜单项需要显示复选框的用户界面 (UI)。
公共属性 Checked 获取或设置一个值指示是否选中该菜单项。
公共属性 Command 获取表示菜单操作的命令。
公共属性 Context 获取当前的编辑上下文。 (继承自 MenuBase。)
公共属性 DisplayName 获取或设置要为该菜单项显示的本地化文本。 (继承自 MenuBase。)
公共属性 Enabled 获取或设置一个值指示是否用户可以使用菜单操作项。
公共属性 ImageUri 获取或设置与 MenuAction 关联的图像的路径。
公共属性 Name 获取或设置该菜单项的唯一标识符。 (继承自 MenuBase。)
公共属性 Visible 获取或设置一个值指示是否在菜单中显示该项。

页首

方法

  名称 说明
公共方法 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法 OnPropertyChanged 引发 PropertyChanged 事件。 (继承自 MenuBase。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

事件

  名称 说明
公共事件 Execute 执行菜单项时发生。
公共事件 PropertyChanged 在属性更改时发生。 (继承自 MenuBase。)

页首

备注

使用 MenuAction 类可以在 WPF Designer中定义一个上下文菜单项。 

若要显示上下文菜单项,请从 ContextMenuProvider 类继承并创建 MenuAction 项和关联的 MenuGroup。 这些菜单对象通常是在从 PrimarySelectionContextMenuProvider(该类在主选项内容上显示上下文菜单)派生的类的构造函数中创建的。

在 MenuAction 事件处理程序中为您的 Execute 实现逻辑。

MenuAction 类与 WPF 命令系统兼容。 使用 Command 属性,以编程方式调用 MenuAction,而不是通过用户界面调用。

示例

下面的代码示例演示如何设置两个 MenuAction 项,这两个项可在设计时设置控件的 Background 属性。 有关更多信息,请参见演练:创建菜单提供程序

Private setBackgroundToBlueMenuAction As MenuAction
Private clearBackgroundMenuAction As MenuAction


...


' The provider's constructor sets up the MenuAction objects 
' and the the MenuGroup which holds them.
Public Sub New()

    ' Set up the MenuAction which sets the control's 
    ' background to Blue.
    setBackgroundToBlueMenuAction = New MenuAction("Blue")
    setBackgroundToBlueMenuAction.Checkable = True
    AddHandler setBackgroundToBlueMenuAction.Execute, AddressOf SetBackgroundToBlue_Execute

    ' Set up the MenuAction which sets the control's 
    ' background to its default value.
    clearBackgroundMenuAction = New MenuAction("Cleared")
    clearBackgroundMenuAction.Checkable = True
    AddHandler clearBackgroundMenuAction.Execute, AddressOf ClearBackground_Execute

    ' Set up the MenuGroup which holds the MenuAction items.
    Dim backgroundFlyoutGroup As New MenuGroup("SetBackgroundsGroup", "Set Background")

    ' If HasDropDown is false, the group appears inline, 
    ' instead of as a flyout. Set to true.
    backgroundFlyoutGroup.HasDropDown = True
    backgroundFlyoutGroup.Items.Add(setBackgroundToBlueMenuAction)
    backgroundFlyoutGroup.Items.Add(clearBackgroundMenuAction)
    Me.Items.Add(backgroundFlyoutGroup)

    ' The UpdateItemStatus event is raised immediately before 
    ' this provider shows its tabs, which provides the opportunity 
    ' to set states.
    AddHandler UpdateItemStatus, AddressOf CustomContextMenuProvider_UpdateItemStatus

End Sub
private MenuAction setBackgroundToBlueMenuAction;
private MenuAction clearBackgroundMenuAction;


...


// The provider's constructor sets up the MenuAction objects 
// and the the MenuGroup which holds them.
public CustomContextMenuProvider()
{   
    // Set up the MenuAction which sets the control's 
    // background to Blue.
    setBackgroundToBlueMenuAction = new MenuAction("Blue");
    setBackgroundToBlueMenuAction.Checkable = true;
    setBackgroundToBlueMenuAction.Execute += 
        new EventHandler<MenuActionEventArgs>(SetBackgroundToBlue_Execute);

    // Set up the MenuAction which sets the control's 
    // background to its default value.
    clearBackgroundMenuAction = new MenuAction("Cleared");
    clearBackgroundMenuAction.Checkable = true;
    clearBackgroundMenuAction.Execute += 
        new EventHandler<MenuActionEventArgs>(ClearBackground_Execute);

    // Set up the MenuGroup which holds the MenuAction items.
    MenuGroup backgroundFlyoutGroup = 
        new MenuGroup("SetBackgroundsGroup", "Set Background");

    // If HasDropDown is false, the group appears inline, 
    // instead of as a flyout. Set to true.
    backgroundFlyoutGroup.HasDropDown = true;
    backgroundFlyoutGroup.Items.Add(setBackgroundToBlueMenuAction);
    backgroundFlyoutGroup.Items.Add(clearBackgroundMenuAction);
    this.Items.Add(backgroundFlyoutGroup);

    // The UpdateItemStatus event is raised immediately before 
    // this provider shows its tabs, which provides the opportunity 
    // to set states.
    UpdateItemStatus += 
        new EventHandler<MenuActionEventArgs>(
            CustomContextMenuProvider_UpdateItemStatus);
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.Windows.Design.Interaction 命名空间

PrimarySelectionContextMenuProvider

MenuGroup

其他资源

演练:创建菜单提供程序