syncfusion-wpf-menu について
WPF で Syncfusion MenuAdv を使ったメニューを構築するためのスキルです。階層項目、データバインディング、MVVM コマンドに加え、外観や操作方法の設定も扱います。
主な機能
- 01階層メニュー項目の作成
- 02階層データコレクションのバインド
- 03アイコンとショートカット表示の設定
- 04チェック項目とラジオ項目の追加
- 05ICommand コマンドのバインド
- 06向きとサブメニュー動作の設定
活用シーン
- 01File や Edit などのアプリメニュー作成
- 02データソースからのメニュー生成
- 03MVVM コマンドによるメニュー処理
インストール
コマンドをコピーしてターミナルで実行します。
$
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(コピー、切り取り、貼り付け)
- MVVM 向けの DelegateCommand 実装パターン
配置と展開モード
📄 参照: references/orientation-and-expand-mode.md
- Orientation — 横向き(既定)と縦向き
- 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 |
| メニュー項目の横にアイコンを表示 | <Image Source="..."/> を指定した MenuItemAdv.Icon |
| キーボードショートカットのラベル | 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 対応