syncfusion-wpf-menu
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseImplementing MenuAdv (WPF)
实现MenuAdv(WPF)
When to Use This Skill
适用场景
Use this skill when the user needs to:
- Build an application menu bar (File, Edit, View…) with nested submenus
- Add icons, keyboard shortcut labels, or separators to menu items
- Create checkable menu items (checkbox or radio button style)
- Bind a hierarchical data collection to a menu via ItemsSource
- Wire menu items to ICommand implementations (MVVM pattern)
- Switch between horizontal and vertical menu orientation
- Control how submenus open (click vs mouse-hover)
在以下场景中可使用该组件:
- 构建带有嵌套子菜单的应用程序菜单栏(文件、编辑、视图…)
- 为菜单项添加图标、键盘快捷键标签或分隔符
- 创建可勾选的菜单项(复选框或单选按钮样式)
- 通过ItemsSource将层级数据集合绑定到菜单
- 将菜单项与ICommand实现关联(MVVM模式)
- 在水平和垂直菜单布局方向之间切换
- 控制子菜单的打开方式(点击 vs 鼠标悬停)
Component Overview
组件结构概述
MenuAdv (root menu bar container)
├── MenuItemAdv (×N) (top-level or nested item)
│ ├── Header — display text
│ ├── Icon — image/UIElement on left
│ ├── InputGestureText — shortcut label (e.g. "Ctrl+N")
│ ├── IsCheckable / CheckIconType — checkbox or radio button mode
│ ├── Command / CommandParameter — ICommand binding
│ └── MenuItemAdv (×N) (nested submenu items)
└── MenuItemSeparator (horizontal divider line)Assembly:
Namespace:
XAML schema:
Syncfusion.Shared.WPFNamespace:
Syncfusion.Windows.SharedXAML schema:
http://schemas.syncfusion.com/wpfMenuAdv (根菜单栏容器)
├── MenuItemAdv (×N) (顶层或嵌套菜单项)
│ ├── Header — 显示文本
│ ├── Icon — 左侧的图像/UIElement
│ ├── InputGestureText — 快捷键标签(例如 "Ctrl+N")
│ ├── IsCheckable / CheckIconType — 复选框或单选按钮模式
│ ├── Command / CommandParameter — ICommand绑定
│ └── MenuItemAdv (×N) (嵌套子菜单项)
└── MenuItemSeparator (水平分隔线)程序集:
命名空间:
XAML架构:
Syncfusion.Shared.WPF命名空间:
Syncfusion.Windows.SharedXAML架构:
http://schemas.syncfusion.com/wpfDocumentation and Navigation Guide
文档与导航指南
Getting Started
快速入门
📄 Read: references/getting-started.md
- Assembly reference and NuGet
- XAML namespace declaration
- Declarative nested MenuItemAdv in XAML
- C# code-behind creation
- Setting icons on items
- Themes with SfSkinManager
📄 阅读: references/getting-started.md
- 程序集引用与NuGet包
- XAML命名空间声明
- 在XAML中声明嵌套的MenuItemAdv
- C#代码后台创建方式
- 为菜单项设置图标
- 使用SfSkinManager设置主题
Data Binding
数据绑定
📄 Read: references/data-binding.md
- Binding ObservableCollection via ItemsSource
- Model + ViewModel with SubItems hierarchy
- HierarchicalDataTemplate setup
- Binding from XML via XmlDataProvider + XPath
📄 阅读: references/data-binding.md
- 通过ItemsSource绑定ObservableCollection
- 带有SubItems层级结构的模型+视图模型
- HierarchicalDataTemplate配置
- 通过XmlDataProvider + XPath绑定XML数据
Menu Item Features
菜单项特性
📄 Read: references/menu-item-features.md
- Icons on MenuItemAdv
- InputGestureText (keyboard shortcut labels)
- MenuItemSeparator (visual divider)
- CheckBox menu items (IsCheckable, CheckIconType)
- RadioButton menu items (GroupName for mutual exclusion)
📄 阅读: references/menu-item-features.md
- MenuItemAdv的图标设置
- InputGestureText(键盘快捷键标签)
- MenuItemSeparator(视觉分隔符)
- 复选框菜单项(IsCheckable、CheckIconType)
- 单选按钮菜单项(使用GroupName实现互斥)
Commands
命令绑定
📄 Read: references/commands.md
- Command property — binding to ICommand
- CommandParameter — value passed to handler
- CommandTarget — routing to a specific element
- Built-in ApplicationCommands (Copy, Cut, Paste)
- DelegateCommand implementation pattern for MVVM
📄 阅读: references/commands.md
- Command属性 — 绑定到ICommand
- CommandParameter — 传递给处理程序的值
- CommandTarget — 路由到特定元素
- 内置ApplicationCommands(复制、剪切、粘贴)
- 适用于MVVM的DelegateCommand实现模式
Orientation and Expand Mode
布局方向与展开模式
📄 Read: references/orientation-and-expand-mode.md
- Orientation — Horizontal (default) vs Vertical
- ExpandMode — ExpandOnClick vs ExpandOnMouseOver
- Boundary detection and scroll support overview
- Decision guide
📄 阅读: references/orientation-and-expand-mode.md
- Orientation — 水平(默认)或垂直
- ExpandMode — 点击展开或鼠标悬停展开
- 边界检测与滚动支持概述
- 选型指南
Appearance
外观定制
📄 Read: references/appearance.md
- Animation support
- Keyboard navigation
- Blendability (Expression Blend customization)
- Themes via SfSkinManager and ThemeStudio
📄 阅读: references/appearance.md
- 动画支持
- 键盘导航
- Blend可定制性(Expression Blend自定义)
- 通过SfSkinManager和ThemeStudio设置主题
Quick Start
快速开始示例
xaml
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
<syncfusion:MenuAdv Height="25" VerticalAlignment="Top">
<syncfusion:MenuItemAdv Header="File">
<syncfusion:MenuItemAdv Header="New"/>
<syncfusion:MenuItemAdv Header="Open"/>
<syncfusion:MenuItemSeparator/>
<syncfusion:MenuItemAdv Header="Exit"/>
</syncfusion:MenuItemAdv>
<syncfusion:MenuItemAdv Header="Edit">
<syncfusion:MenuItemAdv Header="Cut"/>
<syncfusion:MenuItemAdv Header="Copy"/>
<syncfusion:MenuItemAdv Header="Paste"/>
</syncfusion:MenuItemAdv>
<syncfusion:MenuItemAdv Header="View"/>
</syncfusion:MenuAdv>csharp
using Syncfusion.Windows.Shared;
MenuAdv menu = new MenuAdv();
MenuItemAdv file = new MenuItemAdv { Header = "File" };
file.Items.Add(new MenuItemAdv { Header = "New" });
file.Items.Add(new MenuItemAdv { Header = "Open" });
file.Items.Add(new MenuItemSeparator());
file.Items.Add(new MenuItemAdv { Header = "Exit" });
MenuItemAdv edit = new MenuItemAdv { Header = "Edit" };
edit.Items.Add(new MenuItemAdv { Header = "Cut" });
edit.Items.Add(new MenuItemAdv { Header = "Copy" });
menu.Items.Add(file);
menu.Items.Add(edit);
this.Content = menu;xaml
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
<syncfusion:MenuAdv Height="25" VerticalAlignment="Top">
<syncfusion:MenuItemAdv Header="File">
<syncfusion:MenuItemAdv Header="New"/>
<syncfusion:MenuItemAdv Header="Open"/>
<syncfusion:MenuItemSeparator/>
<syncfusion:MenuItemAdv Header="Exit"/>
</syncfusion:MenuItemAdv>
<syncfusion:MenuItemAdv Header="Edit">
<syncfusion:MenuItemAdv Header="Cut"/>
<syncfusion:MenuItemAdv Header="Copy"/>
<syncfusion:MenuItemAdv Header="Paste"/>
</syncfusion:MenuItemAdv>
<syncfusion:MenuItemAdv Header="View"/>
</syncfusion:MenuAdv>csharp
using Syncfusion.Windows.Shared;
MenuAdv menu = new MenuAdv();
MenuItemAdv file = new MenuItemAdv { Header = "File" };
file.Items.Add(new MenuItemAdv { Header = "New" });
file.Items.Add(new MenuItemAdv { Header = "Open" });
file.Items.Add(new MenuItemSeparator());
file.Items.Add(new MenuItemAdv { Header = "Exit" });
MenuItemAdv edit = new MenuItemAdv { Header = "Edit" };
edit.Items.Add(new MenuItemAdv { Header = "Cut" });
edit.Items.Add(new MenuItemAdv { Header = "Copy" });
menu.Items.Add(file);
menu.Items.Add(edit);
this.Content = menu;Common Patterns
常见实现模式
| Scenario | Approach |
|---|---|
| Static app menu (File/Edit/View) | Declarative nested |
| Dynamic data-driven menu | |
| Icon beside menu item | |
| Keyboard shortcut label | |
| Separator between groups | |
| Toggle option (checkable) | |
| Mutually exclusive options | |
| MVVM command binding | |
| Vertical sidebar menu | |
| Open submenu on hover | |
| 场景 | 实现方式 |
|---|---|
| 静态应用菜单(文件/编辑/视图) | 在XAML中声明嵌套的 |
| 动态数据驱动菜单 | |
| 菜单项旁添加图标 | 使用 |
| 键盘快捷键标签 | 设置 |
| 分组间添加分隔符 | 使用 |
| 切换选项(可勾选) | 设置 |
| 互斥选项 | 设置 |
| MVVM命令绑定 | 设置 |
| 垂直侧边栏菜单 | 设置 |
| 鼠标悬停打开子菜单 | 设置 |
Key Properties
核心属性
MenuAdv:
| Property | Description |
|---|---|
| |
| |
| Data collection for data-bound population |
| |
MenuItemAdv:
| Property | Description |
|---|---|
| Display text |
| Image/UIElement shown on left |
| Shortcut key label (e.g., |
| Enable checkbox/radio behavior |
| |
| Checked state (bool) |
| Radio button group identifier |
| |
| Value passed to command |
| Target element for routed commands |
MenuAdv核心属性:
| 属性 | 说明 |
|---|---|
| 菜单项布局为 |
| 子菜单打开方式为 |
| 用于数据绑定的数据源集合 |
| 数据绑定项的 |
MenuItemAdv核心属性:
| 属性 | 说明 |
|---|---|
| 显示文本 |
| 左侧显示的图像/UIElement |
| 快捷键标签(例如 |
| 启用复选框/单选按钮行为 |
| 类型为 |
| 勾选状态(布尔值) |
| 单选按钮组标识符 |
| |
| 传递给命令的参数值 |
| 路由命令的目标元素 |