Следующее, хотя и не полное решение, работает. Я действительно сделал это, чтобы предложить путь, по которому вы должны следовать, чтобы создать горизонтальную панель вкладок. * Создание компонента вкладки для представления одной вкладки. * Создание компонента TabBar, который может содержать несколько объектов вкладок, и манипулирование ими по мере необходимости.
Обратите внимание, что каждая вкладка содержит кнопку закрытия, которая «закрывает» вкладку при нажатии. .
Tab.razor
<li style="height:auto; width:inherit; padding:5px; border: 1px solid blue; text-align:right;">
<span style="float: left">@Title</span>
<a href="#" @onclick="@(() => Close.InvokeAsync(ID))" role="button">X</a>
</li>
<div style="padding:0px; ">@ChildContent</div>
@code {
[Parameter]
public int ID { get; set; }
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public EventCallback <int> Close {get; set;}
}
TabBar.razor
<ul class="nav nav-tabs tb-tabs">
<li><a href="#" @onclick="@GoForward" role="button">--></a></li>
@foreach (var tab in tabs)
{
<Tab ID="@tab.ID" Title="@tab.Title" Close="@Close"></Tab>
}
<li><a href="#" @onclick="@GoBackward" role="button"><--</a></li>
</ul>
@code {
// TODO: Add code to go forward
private void GoForward()
{
}
// TODO: Add code to go backward
private void GoBackward()
{
}
List<NavTab> tabs = new List<NavTab>
{
new NavTab{ ID = 1, Title = "Long Name Example 1"},
new NavTab{ ID = 2, Title = "Small" },
new NavTab{ ID = 3, Title = "Long Name Example 2" }
};
private void Close(int ID)
{
RemoveNavTab(ID);
}
// You can also create a similar method to add tabs dynamically
public void RemoveNavTab(int ID)
{
tabs.Remove(tabs.Where(alert => alert.ID == ID).FirstOrDefault());
StateHasChanged();
}
public class NavTab
{
public int ID { get; set; }
public string Title { get; set; }
}
}
Поместите следующее в MainLayout над элементом привязки «About»
<div>
<TabBar />
</div>
Запустите ваше приложение и протестируйте код ...
Примечание: я создал схему, и все, что вам нужно сделать, это добавить необходимые функции поверх него. Используйте FlexBox для управления вкладками в css. Добавьте код для определения размера отображаемого текста и т. Д. c.