syncfusion-wpf-menu

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Implementing 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:
Syncfusion.Shared.WPF

Namespace:
Syncfusion.Windows.Shared

XAML schema:
http://schemas.syncfusion.com/wpf

MenuAdv                               (根菜单栏容器)
├── MenuItemAdv  (×N)                 (顶层或嵌套菜单项)
│   ├── Header                        — 显示文本
│   ├── Icon                          — 左侧的图像/UIElement
│   ├── InputGestureText              — 快捷键标签(例如 "Ctrl+N")
│   ├── IsCheckable / CheckIconType   — 复选框或单选按钮模式
│   ├── Command / CommandParameter    — ICommand绑定
│   └── MenuItemAdv  (×N)            (嵌套子菜单项)
└── MenuItemSeparator                 (水平分隔线)
程序集:
Syncfusion.Shared.WPF

命名空间:
Syncfusion.Windows.Shared

XAML架构:
http://schemas.syncfusion.com/wpf

Documentation 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

常见实现模式

ScenarioApproach
Static app menu (File/Edit/View)Declarative nested
MenuItemAdv
in XAML
Dynamic data-driven menu
ItemsSource
+
HierarchicalDataTemplate
Icon beside menu item
MenuItemAdv.Icon
with
<Image Source="..."/>
Keyboard shortcut label
InputGestureText="Ctrl+N"
Separator between groups
<syncfusion:MenuItemSeparator/>
Toggle option (checkable)
IsCheckable="True"
+
CheckIconType="CheckBox"
Mutually exclusive options
CheckIconType="RadioButton"
+
GroupName="group1"
MVVM command binding
Command="{Binding SaveCommand}"
Vertical sidebar menu
Orientation="Vertical"
Open submenu on hover
ExpandMode="ExpandOnMouseOver"

场景实现方式
静态应用菜单(文件/编辑/视图)在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"

Key Properties

核心属性

MenuAdv:
PropertyDescription
Orientation
Horizontal
(default) or
Vertical
item layout
ExpandMode
ExpandOnClick
or
ExpandOnMouseOver
ItemsSource
Data collection for data-bound population
ItemTemplate
HierarchicalDataTemplate
for data-bound items
MenuItemAdv:
PropertyDescription
Header
Display text
Icon
Image/UIElement shown on left
InputGestureText
Shortcut key label (e.g.,
"Ctrl+S"
)
IsCheckable
Enable checkbox/radio behavior
CheckIconType
CheckBox
or
RadioButton
IsChecked
Checked state (bool)
GroupName
Radio button group identifier
Command
ICommand
binding
CommandParameter
Value passed to command
CommandTarget
Target element for routed commands
MenuAdv核心属性:
属性说明
Orientation
菜单项布局为
Horizontal
(默认)或
Vertical
ExpandMode
子菜单打开方式为
ExpandOnClick
ExpandOnMouseOver
ItemsSource
用于数据绑定的数据源集合
ItemTemplate
数据绑定项的
HierarchicalDataTemplate
MenuItemAdv核心属性:
属性说明
Header
显示文本
Icon
左侧显示的图像/UIElement
InputGestureText
快捷键标签(例如
"Ctrl+S"
IsCheckable
启用复选框/单选按钮行为
CheckIconType
类型为
CheckBox
RadioButton
IsChecked
勾选状态(布尔值)
GroupName
单选按钮组标识符
Command
ICommand
绑定
CommandParameter
传递给命令的参数值
CommandTarget
路由命令的目标元素