The Menu uses the NavigationManager to go to the pages that are assigned to the individual MenuItem objects. Is there a way to pass the "force load" value to these menu items?
-------------------- ADMIN EDIT --------------------
You can work around the issue if you skip setting Url field of the items that you want to force load and set your own property. Then, handle OnClick of the menu items and check if this property is set and manually call the navigation manager for the URL. You can see the code for this approach below:
public List<MenuItem> MenuItems { get; set; }
protected void OnClickHandler(MenuItem item)
{
if (item.ForceLoadUrl != null)
{
navManager.NavigateTo(item.ForceLoadUrl, true);
}
}
public class MenuItem
{
public string Text { get; set; }
public string Url { get; set; }
public string ForceLoadUrl { get; set; }
public List<MenuItem> Items { get; set; }
}
protected override void OnInitialized()
{
MenuItems = new List<MenuItem>()
{
new MenuItem()
{
Text = "site.css",
ForceLoadUrl = "/css/site.css"
},
new MenuItem()
{
Text = "Counter",
Url = "/counter"
},
new MenuItem()
{
Text = "Fetch Data",
Url = "/fetchdata"
}
};
base.OnInitialized();
}
Use any demo and rapidly hover between parent menu items:
If the collection you pass to the Menu Data parameter is null or empty, you will get an exception like this
System.ArgumentNullException: Value cannot be null. (Parameter 'source')I need to style the entire menu item, not just my template, but there are classes from the menu that I cannot override with my code or template.
Using the demo on https://demos.telerik.com/blazor-ui/menu/index if you select Item 1 with the left mouse button, both Item 1 and Item 2 drop downs open, see attached images