# Syncfusion Wpf Menu

> Implement Syncfusion WPF MenuAdv for hierarchical menus, context menus, and application menu bars. Use this when building nested menus, menus with icons, keyboard shortcuts, checkbox/radio button menu items, or command-bound menus in WPF. Covers ItemsSource data binding with HierarchicalDataTemplate, MenuItemSeparator, orientation, expand mode, animation, and theming.

- Skill: `syncfusion/syncfusion-wpf-menu` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add syncfusion/syncfusion-wpf-menu`
- Raw SKILL.md: https://api.skillmd.com/api/skills/syncfusion/syncfusion-wpf-menu/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: syncfusion (https://skillmd.com/u/syncfusion)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/syncfusion/syncfusion-wpf-menu

---


# Implementing 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)

---

## 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`

---

## Documentation and Navigation Guide

### Getting Started
📄 **Read:** [references/getting-started.md](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

### Data Binding
📄 **Read:** [references/data-binding.md](references/data-binding.md)
- Binding ObservableCollection via ItemsSource
- Model + ViewModel with SubItems hierarchy
- HierarchicalDataTemplate setup
- Binding from XML via XmlDataProvider + XPath

### Menu Item Features
📄 **Read:** [references/menu-item-features.md](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)

### Commands
📄 **Read:** [references/commands.md](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

### Orientation and Expand Mode
📄 **Read:** [references/orientation-and-expand-mode.md](references/orientation-and-expand-mode.md)
- Orientation — Horizontal (default) vs Vertical
- ExpandMode — ExpandOnClick vs ExpandOnMouseOver
- Boundary detection and scroll support overview
- Decision guide

### Appearance
📄 **Read:** [references/appearance.md](references/appearance.md)
- Animation support
- Keyboard navigation
- Blendability (Expression Blend customization)
- Themes via SfSkinManager and 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;
```

---

## Common Patterns

| Scenario | Approach |
|---|---|
| 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"` |

---

## Key Properties

**MenuAdv:**

| Property | Description |
|---|---|
| `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:**

| Property | Description |
|---|---|
| `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 |

