跳转到内容

SusContextMenu

SusContextMenu

右键(或编程方式触发)弹出菜单,锚定到激活元素。

SusKit · 分子(商业)

在 Playground 中打开

SusKit · Molecules

属性

名称类型默认值
ModelProp<bool>falsev-model
DisabledProp<bool>falsev-model

插槽

名称
activator
(默认)

事件

名称字段载荷
SelectOnSelectstring
OpenOnOpen
CloseOnClose

样式钩子

USS 类契约 — 无需改 C# 即可覆盖外观。状态通过这些类切换:

  • sus-context-menu
  • sus-context-menu__activator
  • sus-context-menu__divider
  • sus-context-menu__icon
  • sus-context-menu__item
  • sus-context-menu__item--disabled
  • sus-context-menu__label
  • sus-context-menu__list
  • sus-context-menu__popup
  • sus-context-menu--open
  • sus-slot

用法

Items 在代码中设置(List<ContextMenuItem>)。将内容接入 activator 插槽;右键点击打开弹出菜单。

csharp
var menu = new SusContextMenu();
menu.Items.Value = new List<SusContextMenu.ContextMenuItem>
{
    new() { Label = "Inspect", Value = "inspect", Icon = "search" },
    new() { Label = "Trade", Value = "trade", Icon = "shop" },
    new() { Divider = true },
    new() { Label = "Report", Value = "report", Disabled = true },
};
menu.OnSelect += value => { /* … */ };
menu.Slot("activator")?.Add(new Label("Right-click me"));
menu.Open(); // or menu.Model.Value = true;
xml
<template>
  <sus:SusContextMenu :Model="Open.Value"
                      @select="OnSelect"
                      @open="OnOpen"
                      @close="OnClose">
    <template #activator>
      <ui:Label text="Right-click me" />
    </template>
  </sus:SusContextMenu>
</template>

<script>
public Prop<bool> Open = new(false);
void OnSelect(string value) { /* … */ }
void OnOpen() { }
void OnClose() { }
// Populate Items in code.
</script>
PropRole
ItemsList<ContextMenuItem> —— 行项 / 分隔线
Model打开(true)/ 关闭
Disabled阻止打开

备注

  • 项字段:LabelValueIconDisabledDivider
  • Open() / Close()Model 保持同步。