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 以编程方式排序的主要内容,如果未能解决你的问题,请参考以下文章

通过绑定部分填充 MenuItem

Android给一个menuItem添加子菜单,addSubMenu()在哪里?

Xamarin.Forms Shell 在汉堡菜单中将 Flyout Menu 与 MenuItem 组合并排序

如何引用menu.xml中定义的MenuItem?

如何将 MenuItem 弹出窗口与菜单的右下角对齐

MenuItem Horizo ntalAlignment不起作用