syncfusion-blazor-context-menu

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Syncfusion Blazor ContextMenu Component

Syncfusion Blazor ContextMenu 组件

When to Use This Skill

何时使用此技能

Use the Syncfusion Blazor ContextMenu skill when:
  • Building right-click context menus for interactive elements
  • Creating popup navigation menus triggered by user interaction
  • Need hierarchical menu structures with nesting support
  • Implementing custom menu templates with shortcuts or icons
  • Managing dynamic menu states (enable/disable items)
  • Requiring data-driven menus from custom object collections
  • Building advanced interactions with dialogs, animations, or scrolling
ContextMenu provides fully customizable, event-driven popup menus perfect for desktop-like interactions in web apps.

在以下场景使用Syncfusion Blazor ContextMenu技能:
  • 为交互元素构建右键上下文菜单
  • 创建由用户交互触发的弹出导航菜单
  • 需要支持嵌套的层级菜单结构
  • 实现带有快捷键或图标的自定义菜单模板
  • 管理动态菜单状态(启用/禁用菜单项)
  • 需要来自自定义对象集合的数据驱动菜单
  • 构建包含对话框、动画或滚动功能的高级交互
ContextMenu提供完全可定制的、事件驱动的弹出菜单,非常适合在Web应用中实现类桌面的交互体验。

Documentation and Navigation Guide

文档与导航指南

Getting Started

快速入门

📄 Read: references/getting-started.md
  • NuGet installation (Navigations + Themes packages)
  • Namespace imports and Syncfusion service registration
  • Stylesheet and script resource setup
  • Basic ContextMenu component markup
  • First render and click-to-test validation
  • Common import patterns for Blazor projects
📄 阅读: references/getting-started.md
  • NuGet安装(导航组件包 + 主题包)
  • 命名空间导入与Syncfusion服务注册
  • 样式表与脚本资源配置
  • 基础ContextMenu组件标记
  • 首次渲染与点击测试验证
  • Blazor项目的常见导入模式

Customization and Nesting

自定义与嵌套

📄 Read: references/customization-and-nesting.md
  • Custom MenuTemplate for rich UI (shortcuts, badges, icons)
  • CssClass property for component-level styling
  • Multilevel nesting (2-3 nested levels)
  • Nested MenuItem hierarchies
  • Best practices for menu depth and UX
📄 阅读: references/customization-and-nesting.md
  • 用于丰富UI的自定义MenuTemplate(快捷键、徽章、图标)
  • 用于组件级样式的CssClass属性
  • 多层嵌套(2-3级嵌套)
  • 嵌套MenuItem层级结构
  • 菜单深度与用户体验的最佳实践

Icons and Navigation

图标与导航

📄 Read: references/icons-and-navigation.md
  • IconCss property and e-icons class mapping
  • Custom icon class support
  • Icon positioning in menu items
  • Url property for hyperlink navigation
  • Navigation target behaviors (_blank, _self, etc.)
📄 阅读: references/icons-and-navigation.md
  • IconCss属性与e-icons类映射
  • 自定义图标类支持
  • 菜单项中的图标定位
  • 用于超链接导航的Url属性
  • 导航目标行为(_blank、_self等)

Styling and Appearance

样式与外观

📄 Read: references/styling-and-appearance.md
  • CSS class override reference (.e-contextmenu-container, .e-menu-item, etc.)
  • Focus and selected state styling
  • Theme customization with Theme Studio
  • Common styling patterns and examples
📄 阅读: references/styling-and-appearance.md
  • CSS类覆盖参考(.e-contextmenu-container、.e-menu-item等)
  • 焦点与选中状态样式
  • 使用Theme Studio自定义主题
  • 常见样式模式与示例

Events and Interactions

事件与交互

📄 Read: references/events-and-interactions.md
  • ItemSelected event binding and patterns
  • MenuEventArgs data access
  • Programmatic Open/Close methods with coordinates
  • Manual menu control and triggering
  • Event handler best practices
📄 阅读: references/events-and-interactions.md
  • ItemSelected事件绑定与模式
  • MenuEventArgs数据访问
  • 带坐标的程序化打开/关闭方法
  • 手动菜单控制与触发
  • 事件处理程序最佳实践

Data Binding

数据绑定

📄 Read: references/data-binding.md
  • Items collection binding
  • MenuFieldSettings property mapping
  • Custom object data sources
  • Hierarchical data binding with nested collections
  • Dynamic menu population
📄 阅读: references/data-binding.md
  • Items集合绑定
  • MenuFieldSettings属性映射
  • 自定义对象数据源
  • 嵌套集合的层级数据绑定
  • 动态菜单填充

Menu Item Management

菜单项管理

📄 Read: references/menu-item-management.md
  • Disabled property for item state management
  • Enable/disable logic and workflows
  • OnOpen event for conditional disabling
  • Separator property usage and styling
  • Controlling item availability dynamically
📄 阅读: references/menu-item-management.md
  • 用于项状态管理的Disabled属性
  • 启用/禁用逻辑与工作流
  • 用于条件禁用的OnOpen事件
  • Separator属性的使用与样式
  • 动态控制项的可用性

Advanced Features

高级功能

📄 Read: references/advanced-features.md
  • MenuAnimationSettings with effects (FadeIn, SlideDown, ZoomIn, None)
  • Dialog integration with ItemSelected events
  • EnableScrolling for large menu lists
  • ScrollHeight configuration
  • Large menu handling strategies

📄 阅读: references/advanced-features.md
  • 带有动画效果的MenuAnimationSettings(FadeIn、SlideDown、ZoomIn、None)
  • 与ItemSelected事件集成的对话框
  • 针对大型菜单列表的EnableScrolling
  • ScrollHeight配置
  • 大型菜单处理策略

Quick Start Example

快速入门示例

cshtml
@using Syncfusion.Blazor.Navigations

<div id="target">Right click to open menu</div>

<SfContextMenu Target="#target" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Cut"></MenuItem>
        <MenuItem Text="Copy"></MenuItem>
        <MenuItem Text="Paste"></MenuItem>
    </MenuItems>
</SfContextMenu>

<style>
    #target {
        border: 1px dashed; height: 150px; padding: 10px;
        position: relative; text-align: center; color: gray;
    }
</style>
Result: Right-click the gray area to see the context menu with Cut, Copy, Paste options.

cshtml
@using Syncfusion.Blazor.Navigations

<div id="target">Right click to open menu</div>

<SfContextMenu Target="#target" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Cut"></MenuItem>
        <MenuItem Text="Copy"></MenuItem>
        <MenuItem Text="Paste"></MenuItem>
    </MenuItems>
</SfContextMenu>

<style>
    #target {
        border: 1px dashed; height: 150px; padding: 10px;
        position: relative; text-align: center; color: gray;
    }
</style>
**效果:**右键点击灰色区域,即可查看包含剪切、复制、粘贴选项的上下文菜单。

Common Patterns

常见模式

Pattern 1: Basic Right-Click Menu

模式1:基础右键菜单

cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Edit"></MenuItem>
        <MenuItem Text="Delete"></MenuItem>
    </MenuItems>
</SfContextMenu>
Use when: Simple menu with basic actions on target element.
cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Edit"></MenuItem>
        <MenuItem Text="Delete"></MenuItem>
    </MenuItems>
</SfContextMenu>
**适用场景:**目标元素上带有基础操作的简单菜单。

Pattern 2: Nested Menu (Submenu on Hover)

模式2:嵌套菜单(悬停显示子菜单)

cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="File">
            <MenuItems>
                <MenuItem Text="Open"></MenuItem>
                <MenuItem Text="Save"></MenuItem>
            </MenuItems>
        </MenuItem>
    </MenuItems>
</SfContextMenu>
Use when: Hierarchical menu structure with grouped actions.
cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="File">
            <MenuItems>
                <MenuItem Text="Open"></MenuItem>
                <MenuItem Text="Save"></MenuItem>
            </MenuItems>
        </MenuItem>
    </MenuItems>
</SfContextMenu>
**适用场景:**带有分组操作的层级菜单结构。

Pattern 3: Event-Driven Actions

模式3:事件驱动操作

cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Delete"></MenuItem>
    </MenuItems>
    <MenuEvents TValue="MenuItem" ItemSelected="@OnItemSelected"></MenuEvents>
</SfContextMenu>

@code {
    private void OnItemSelected(MenuEventArgs<MenuItem> e) {
        // Handle: e.Item.Text
    }
}
Use when: Need to execute custom logic on menu item click.
cshtml
<SfContextMenu Target="#myElement" TValue="MenuItem">
    <MenuItems>
        <MenuItem Text="Delete"></MenuItem>
    </MenuItems>
    <MenuEvents TValue="MenuItem" ItemSelected="@OnItemSelected"></MenuEvents>
</SfContextMenu>

@code {
    private void OnItemSelected(MenuEventArgs<MenuItem> e) {
        // Handle: e.Item.Text
    }
}
**适用场景:**需要在菜单项点击时执行自定义逻辑。

Pattern 4: Dynamic Menu from Data

模式4:从数据源生成动态菜单

cshtml
<SfContextMenu Target="#myElement" Items="@menuItems">
    <MenuFieldSettings Text="Title"></MenuFieldSettings>
</SfContextMenu>

@code {
    private List<MenuOption> menuItems = new();
    
    protected override void OnInitialized() {
        menuItems.Add(new MenuOption { Title = "Option 1" });
        menuItems.Add(new MenuOption { Title = "Option 2" });
    }
    
    private class MenuOption { public string Title { get; set; } }
}
Use when: Menu items come from database or dynamic source.

cshtml
<SfContextMenu Target="#myElement" Items="@menuItems">
    <MenuFieldSettings Text="Title"></MenuFieldSettings>
</SfContextMenu>

@code {
    private List<MenuOption> menuItems = new();
    
    protected override void OnInitialized() {
        menuItems.Add(new MenuOption { Title = "Option 1" });
        menuItems.Add(new MenuOption { Title = "Option 2" });
    }
    
    private class MenuOption { public string Title { get; set; } }
}
**适用场景:**菜单项来自数据库或动态数据源。

Key Properties

关键属性

PropertyTypePurpose
Target
stringCSS selector for right-click target element
Items
ListData collection for data-binding
TValue
genericType parameter (usually
MenuItem
)
CssClass
stringCustom CSS class for component styling
ShowItemOnClick
boolEnable sub-menu on click instead of hover
EnableScrolling
boolEnable scroll for large menu lists

属性类型用途
Target
string右键触发目标元素的CSS选择器
Items
List用于数据绑定的集合
TValue
泛型类型参数(通常为
MenuItem
)
CssClass
string用于组件样式的自定义CSS类
ShowItemOnClick
bool启用点击显示子菜单而非悬停
EnableScrolling
bool为大型菜单列表启用滚动

Common Use Cases

常见用例

Use Case 1: File Context Menu
  • Right-click file list item → Cut, Copy, Paste, Delete, Rename options
  • Reference: events-and-interactions.md + menu-item-management.md
Use Case 2: Rich Text Editor
  • Right-click text → Bold, Italic, Underline, Link options
  • Customize template with icons and shortcuts
  • Reference: customization-and-nesting.md + icons-and-navigation.md
Use Case 3: Admin Dashboard
  • Right-click user row → View, Edit, Permissions, Delete
  • Enable/disable based on user role
  • Reference: menu-item-management.md + events-and-interactions.md
Use Case 4: Navigation Menu
  • Click button → Open menu → Navigate to pages
  • Nested categories with smooth animation
  • Reference: icons-and-navigation.md + advanced-features.md

用例1:文件上下文菜单
  • 右键点击文件列表项 → 剪切、复制、粘贴、删除、重命名选项
  • 参考文档: events-and-interactions.md + menu-item-management.md
用例2:富文本编辑器
  • 右键点击文本 → 加粗、斜体、下划线、链接选项
  • 自定义带有图标和快捷键的模板
  • 参考文档: customization-and-nesting.md + icons-and-navigation.md
用例3:管理后台仪表盘
  • 右键点击用户行 → 查看、编辑、权限设置、删除
  • 根据用户角色启用/禁用选项
  • 参考文档: menu-item-management.md + events-and-interactions.md
用例4:导航菜单
  • 点击按钮 → 打开菜单 → 导航至页面
  • 带有流畅动画的嵌套分类
  • 参考文档: icons-and-navigation.md + advanced-features.md

Next Steps

下一步

  1. Start: Read getting-started.md to install and setup
  2. Build: Use customization-and-nesting.md for custom UI
  3. Enhance: Add icons, events, and interactivity with other reference guides
  4. Explore: Check advanced-features.md for animations, dialogs, scrolling
  1. 开始: 阅读getting-started.md完成安装与配置
  2. 构建: 使用customization-and-nesting.md实现自定义UI
  3. 增强: 结合其他参考指南添加图标、事件与交互功能
  4. 探索: 查看advanced-features.md了解动画、对话框与滚动功能