我生成并设置我自己的上下文菜单,并根据
将项目分组到子菜单中SubTitle.Items.Add(..);
这些弹出子菜单工作正常,几乎都很好......但是......
我无法显示子菜单三角形 UNLESS 我将MenuItem角色(您可以按样式中的每个触发器设置)设置为例如TopLevelHeader等
MenuItem.Role没有直接的setter,所以我不得不创建我的子菜单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
答案 0 :(得分:0)
解决方案:不要将菜单的宽度设置为一些整齐的宽度,它会切断菜单右侧的子菜单标记(三角形),它们会消失。