MenuItem 以编程方式排序
Posted
技术标签:
【中文标题】MenuItem 以编程方式排序【英文标题】:MenuItem order programmatically 【发布时间】:2013-09-30 20:23:31 【问题描述】:我将多个菜单项添加到 MenuItem 控件中。 MenuItem 控件是在 xaml 中创建的,但它是空的。我用
MenuItem subMenuItem = new MenuItem();
subMenuItem.Header = "sub item 1";
MenuItemGroupA.Items.Insert( 0, subMenuItem);
向其添加子菜单项。这工作正常。但是,我想控制我添加到 MenuItem 的那些子菜单项的顺序,而不是通过它们的名称,也不是通过它们添加的顺序。我试图将第一个参数更改为其他一些数字。在我看来,如果我使用任何大于 0 的值,则不会添加子项。
有什么建议吗?
[编辑以添加更多细节]
代码在一个函数中并被多次调用,具体取决于文件夹中特定 DLL 的数量。例如,如果我要在该文件夹中查找 3 个 DLL,我会查询它们的名称并获取 Apple、Banana、Cherry。但我希望菜单显示为:樱桃、苹果和香蕉。我试图创建一个像 "Apple", 1, "Banana", 2, "Cherry", 3 这样的字典,但甚至不知道这是否有用。
【问题讨论】:
有什么建议吗? 是的,请举例说明您希望如何构建包含 2 个以上项目的菜单以及它的外观。简单的答案是Items.Add(subMenuItem);
编辑后:我们仍然不知道 Cherry 为何/如何出现在 Apple 之前。这是固定的吗?
【参考方案1】:
您可以尝试使用CollectionViewSource.SortDescriptions 属性。
您可以使项目按任何属性排序,例如 here 中描述的 Tag 属性
【讨论】:
以上是关于MenuItem 以编程方式排序的主要内容,如果未能解决你的问题,请参考以下文章
Android给一个menuItem添加子菜单,addSubMenu()在哪里?