【发布时间】:2009-11-26 21:08:29
【问题描述】:
我正在尝试从主菜单栏创建嵌套菜单层次结构。例如,主菜单栏将包含一个“Goto”菜单项,可以通过“Goto”->“Chapter”->“Chapter Name”->“Subchapter name”进行导航。
“章节”下方的层次结构需要动态添加。当我这样做时,菜单会在尝试显示章节名称的子项时消失。
如果您运行下面的代码示例,您可以单击“转到”和“章节”,但是一旦您将鼠标悬停在或单击其中一个章节名称,菜单就会消失,而不允许其中一个小节名称出现被点击。
谁能告诉我为什么?
using System;
using System.Windows;
using System.Windows.Controls;
namespace MenuTest
{
public class MenuTest : Window
{
// Main method
[STAThread]
public static void Main()
{
Application App = new Application();
App.Run(new MenuTest());
}
// Properties:
Menu MainMenu;
MenuItem GotoMenu;
MenuItem ChapterMenu;
// Constructor
public MenuTest()
{
// Add a menu with a "Goto" submenu that opens up a pop-up with a "Chapter" selection:
// ----------------------------------------------------------------------------------
MainMenu = new Menu();
DockPanel.SetDock(MainMenu, Dock.Top);
this.Content = MainMenu;
GotoMenu = new MenuItem();
GotoMenu.Header = "Goto";
GotoMenu.SubmenuOpened += OnSubMenuOpen;
MainMenu.Items.Add(GotoMenu);
ChapterMenu = new MenuItem();
ChapterMenu.Header = "Chapter";
GotoMenu.Items.Add(ChapterMenu);
}
// Add a chapter and subchapter hiearachy to the Chapter menu:
void OnSubMenuOpen(object Sender, RoutedEventArgs e)
{
ChapterMenu.Items.Clear();
string[] ChapterNames = { "Chapter 1", "Chapter 2", "Chapter 3" };
foreach (string ChapterName in ChapterNames)
{
MenuItem ThisChapterMenu = new MenuItem();
ThisChapterMenu.Header = ChapterName;
ChapterMenu.Items.Add(ThisChapterMenu);
string[] SubChapterNames = { "SubSection 1", "SubSection 2", "SubSection 3" };
foreach (string SubChapterName in SubChapterNames)
{
MenuItem SectionMenu = new MenuItem();
SectionMenu.Header = String.Format("{0} - {1}", ChapterName, SubChapterName);
ThisChapterMenu.Items.Add(SectionMenu);
}
}
}
}
}
【问题讨论】:
标签: c# wpf menu nested menuitem