【发布时间】:2013-12-03 16:57:59
【问题描述】:
我正在动态创建一个包含许多嵌套菜单项的上下文菜单。每次显示上下文菜单时,我都会清除菜单并重新创建菜单项。我是否需要取消订阅这些菜单项点击事件?我在想,当我清除 ContextMenu.Items 列表时,垃圾收集器会拾取菜单项,我不需要担心它们。
void Window_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
if (this.ContextMenu == null)
ContextMenu = new ContextMenu();
else
ContextMenu.Items.Clear();
AddMenuItemsToContextMenu();
}
void AddMenuItemsToContextMenu()
{
//create many nested menu items
foreach (A in AList)
{
MenuItem item = new MenuItem();
item.Header = A.Label;
item.Click += MenuItem_Click;
ContextMenu.Items.Add(item);
//possibly add more menu items to this menu item
}
}
【问题讨论】: