如何从菜单项列表中找到 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)
借助下面的代码,我可以找到我想要的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)