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