如何从菜单项列表中找到 NavigationViewItem

How to find NavigationViewItem from list of menuItems

借助下面的代码,我可以找到我想要的NavigationViewItem

var item = navigationView.MenuItems
                            .OfType<NavigationViewItem>()
                            .FirstOrDefault(menuItem => (string)menuItem.Content == (string)args.InvokedItem);

但如果 NavigationViewItem 本身有其他菜单项,则此代码不再有效。 如何在所有菜单项中找到我想要的 NavigationViewItem?

假设 NavigationViewItem 也有一个 MenuItems 的集合,您可以使用这样的自引用方法:

(bool, NavigationViewItem?) SearchItems(List<NavigationViewItems> itemsToSearch, string argsInvokedItem) {

    foreach (var item in itemsToSearch)
    {
        if((string)item.Content == argsInvokedItem) {
            return (true, item);
        }

        if(item.MenuItems.Count > 0) {
            if(SearchItems(item.MenuItems, argsInvokedItem).Item1)
                return (true, item); 
        }
    }

    return (false, null);
}

然后这样称呼它:

var result = SearchItems(navigationView.MenuItems, (string)args.InvokedItem)