我生成并设置自己的上下文菜单,并将项目分组到子菜单中
SubTitle.Items.Add(..);
这些弹出子菜单工作正常,几乎所有都很好..但是......
除非我将 MenuItem 角色(您可以在样式中为每个触发器设置)设置为例如 TopLevelHeader 等,否则我无法显示子菜单三角形。
MenuItem.Role 没有直接设置器,因此我将不得不将我的子菜单 MenuItems 创建为 XAML 静态对象,然后我赋予它们漂亮的样式,因此它们也将获得子菜单三角形。
问题是,我的上下文菜单完全以编程方式派生自例如数据库,如果我重用静态 XAML MenuItems,我需要在它们上设置垃圾收集器以打破父关系,然后我才能重用它们,和/或我必须不知道这些元素提前。
有没有办法:
MenuItemThatIsTitle.Role = MenuItemRole.TopLevelHeader;
//(in order to get the triangle?)
..从代码?
===
示例代码 - 从代码中将子菜单添加到上下文菜单:
contextM.Items.Add(new Separator());
var TitleH = new MenuItem
{
Header = SettingsDomain.Default.TitleHeader,
FontWeight = FontWeights.Bold,
Height = 25,
IsEnabled = true,
};
if (!(TitleH.Items.Count > 0))
//TitleH.Role = MenuItemRole.TopLevelHeader; to get the triangle..
{
var listmen = List.Select(c => cMenuItem(c)).ToList();
TitleH.ItemsSource = listmen;
}
contextM.Items.Add(TitleH);
contextM.Items.Add(new Separator());
注意:没有相关的 XAML