关于 syncfusion-wpf-menu
面向构建 WPF 应用菜单的 Syncfusion MenuAdv 技能,涵盖嵌套菜单、数据绑定与 MVVM 命令等实现方式,并提供主题和交互配置指引。
主要功能
- 01创建嵌套菜单项
- 02绑定层级数据集合
- 03配置图标与快捷键标签
- 04支持复选与单选菜单项
- 05绑定 ICommand 命令
- 06设置方向与子菜单展开方式
适用场景
- 01构建 File、Edit 等应用菜单
- 02从数据源动态生成菜单
- 03用 MVVM 命令处理菜单操作
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-menu安装后在 Claude Code 中输入/syncfusion-wpf-menu确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/appearance.mdcommands.mddata-binding.mdgetting-started.mdmenu-item-features.mdorientation-and-expand-mode.md详细介绍
实现 MenuAdv(WPF)
何时使用此技能
当用户需要执行以下操作时,请使用此技能:
- 构建应用程序菜单栏(文件、编辑、视图……),并添加嵌套子菜单
- 为菜单项添加图标、键盘快捷键标签或分隔符
- 创建可勾选菜单项(复选框或单选按钮样式)
- 通过 ItemsSource 将分层数据集合绑定到菜单
- 将菜单项连接到 ICommand 实现(MVVM 模式)
- 切换菜单的水平和垂直方向
- 控制子菜单的打开方式(单击或鼠标悬停)
组件概览
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)
程序集: Syncfusion.Shared.WPF
命名空间: Syncfusion.Windows.Shared
XAML 架构: http://schemas.syncfusion.com/wpf
文档与导航指南
开始使用
📄 阅读: references/getting-started.md
- 程序集引用和 NuGet
- XAML 命名空间声明
- 在 XAML 中声明嵌套的 MenuItemAdv
- 在 C# 代码隐藏中创建
- 为菜单项设置图标
- 使用 SfSkinManager 设置主题
数据绑定
📄 阅读: references/data-binding.md
- 通过 ItemsSource 绑定 ObservableCollection
- 使用 SubItems 层次结构的模型和 ViewModel
- 设置 HierarchicalDataTemplate
- 通过 XmlDataProvider + XPath 从 XML 绑定数据
菜单项功能
📄 阅读: references/menu-item-features.md
- MenuItemAdv 上的图标
- InputGestureText(键盘快捷键标签)
- MenuItemSeparator(视觉分隔符)
- 复选框菜单项(IsCheckable、CheckIconType)
- 单选按钮菜单项(使用 GroupName 实现互斥)
命令
📄 阅读: references/commands.md
- Command 属性——绑定到 ICommand
- CommandParameter——传递给处理程序的值
- CommandTarget——路由到特定元素
- 内置 ApplicationCommands(Copy、Cut、Paste)
- 用于 MVVM 的 DelegateCommand 实现模式
方向与展开模式
📄 阅读: references/orientation-and-expand-mode.md
- Orientation——Horizontal(默认)与 Vertical
- ExpandMode——ExpandOnClick 与 ExpandOnMouseOver
- 边界检测和滚动支持概述
- 选择指南
外观
📄 阅读: references/appearance.md
- 动画支持
- 键盘导航
- Blend 兼容性(Expression Blend 自定义)
- 通过 SfSkinManager 和 ThemeStudio 设置主题
快速入门
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>
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 中声明嵌套的 MenuItemAdv |
| 动态数据驱动菜单 | ItemsSource + HierarchicalDataTemplate |
| 菜单项旁显示图标 | 使用 MenuItemAdv.Icon 和 <Image Source="..."/> |
| 键盘快捷键标签 | InputGestureText="Ctrl+N" |
| 分组之间的分隔符 | <syncfusion:MenuItemSeparator/> |
| 切换选项(可勾选) | IsCheckable="True" + CheckIconType="CheckBox" |
| 互斥选项 | CheckIconType="RadioButton" + GroupName="group1" |
| MVVM 命令绑定 | Command="{Binding SaveCommand}" |
| 垂直侧边栏菜单 | Orientation="Vertical" |
| 悬停时打开子菜单 | ExpandMode="ExpandOnMouseOver" |
主要属性
MenuAdv:
| 属性 | 描述 |
|---|---|
Orientation | Horizontal(默认)或 Vertical 项布局 |
ExpandMode | ExpandOnClick 或 ExpandOnMouseOver |
ItemsSource | 用于数据绑定填充的数据集合 |
ItemTemplate | 用于数据绑定项的 HierarchicalDataTemplate |
MenuItemAdv:
| 属性 | 描述 |
|---|---|
Header | 显示文本 |
Icon | 显示在左侧的图像/UIElement |
InputGestureText | 快捷键标签(例如,"Ctrl+S") |
IsCheckable | 启用复选框/单选按钮行为 |
CheckIconType | CheckBox 或 RadioButton |
IsChecked | 选中状态(bool) |
GroupName | 单选按钮组标识符 |
Command | ICommand 绑定 |
CommandParameter | 传递给命令的值 |
CommandTarget | 路由命令的目标元素 |
评论
支持 Markdown