Version: 2020.2
事件类型参考
绑定

内置控件

The following standard controls are built into UI Toolkit:

  • 按钮 (Button)
  • 上下文菜单 (Contextual menu)
  • 编辑器文本字段 (EditorTextField)
  • 标签 (Label)
  • 滚动视图 (ScrollView)
  • 文本字段 (TextField)
  • 开关 (Toggle)

上下文菜单

上下文菜单根据上下文向用户显示一组选项或操作。此上下文可以指代任何事物,通常是指当前选择对象。

启用上下文菜单

要启用上下文菜单,请将 ContextualMenuManipulator 操控器添加到视觉元素。此操控器会在发生鼠标右键按下事件或菜单键松开事件后显示上下文菜单。ContextualMenuManipulator 操控器还会添加一个对应于 ContextualMenuPopulateEvent 的回调。以下代码示例展示了如何执行此操作:

void InstallManipulator(VisualElement element)
{
    ContextualMenuManipulator m = new ContextualMenuManipulator(MyDelegate);
    m.target = element;
}

void MyDelegate(ContextualMenuPopulateEvent event)
{
    // 修改 event.menu
    event.menu.AppendAction("Properties", DisplayProperties, DropdownMenu.MenuAction.AlwaysEnabled);
}

void DisplayProperties(DropdownMenu.MenuAction menuItem)
{
    // ...
}

提供给 ContextualMenuManipulator 构造函数的回调在最后调用,以便子元素可以填充菜单。

在内部,操控器会发送一个 ContextualMenuPopulateEvent 事件,此事件沿以下传播路径传播到目标元素层级视图:从视觉树的根到事件目标,再退回到视觉树的根。沿着传播路径,具有 ContextualMenuPopulateEvent 事件回调的元素可以在上下文菜单中添加、删除或修改菜单项。

响应用户选择

一个元素收到 ContextualMenuPopulateEvent 时会通过调用 DropdownMenu.InsertAction()DropdownMenu.AppendAction() 将菜单项添加到上下文菜单中。

这些函数中的每一个函数都采用两个回调作为参数。用户在菜单中选择菜单项时执行第一个回调。第二个回调在显示菜单之前执行,还会检查菜单项是否已启用。

两个回调都接收一个 MenuAction 作为参数。MenuAction 代表菜单项,具有以下其他有用的属性:

  • MenuAction.userData 会引用可能已用于 AppendAction()InsertAction() 的用户数据。
  • MenuAction.eventInfo 包含触发上下文菜单显示的事件的 相关信息。应在响应事件的操作中使用 MenuAction.eventInfo。例如,可以使用鼠标位置根据所选的上下文菜单项创建和放置对象。

  • 2018–11–02 页面已修订
事件类型参考
绑定