Обновление глобальных хлебных крошек в BlazorC#

Место общения программистов C#
Ответить
Anonymous
 Обновление глобальных хлебных крошек в Blazor

Сообщение Anonymous »

Я создал этот хлеборота , чтобы я мог использовать его для инъекционных хлебных крошек и обновлять их во всем мире.

Код: Выделить всё

public class BreadcrumbService
{
private List
_breadcrumbItems = new List
();

public List
BreadcrumbItems
{
get => _breadcrumbItems;
set
{
_breadcrumbItems = value;
NotifyStateChanged();
}
}

public event Func? OnBreadcrumbsChanged;

public void SetBreadcrumbs(IEnumerable
? items)
{
_breadcrumbItems = items?.ToList() ?? new List
();
NotifyStateChanged();
}

private void NotifyStateChanged() => OnBreadcrumbsChanged?.Invoke();
}
< /code>
И я вводил хлебные крошки в Mainlayout как таковой: < /p>




@Body



и в Applayout я инициализации хлебных крошек:
protected override async Task OnInitializedAsync()
{
BreadcrumbService.OnBreadcrumbsChanged += BreadcrumbsService_OnChange;
}

public void Dispose()
{
BreadcrumbService.OnBreadcrumbsChanged -= BreadcrumbsService_OnChange;
}

private async Task BreadcrumbsService_OnChange()
{
Breadcrumbs = BreadcrumbService.BreadcrumbItems;
await InvokeAsync(StateHasChanged);
}
< /code>
И, наконец, я использую его как таковой: < /p>
@inject BreadcrumbService BreadcrumbService
protected override async Task OnInitializedAsync()
{
BreadcrumbService.SetBreadcrumbs(new List

{
new BreadcrumbItem("Home", href: "/", icon: Icons.Material.Filled.Home)
});

StateHasChanged();
}
.
.
.
// In other component
BreadcrumbService.SetBreadcrumbs(new List

{
new BreadcrumbItem("Home", href: "/", icon: Icons.Material.Filled.Home),
new BreadcrumbItem("Blogs", href: "/blogs"),
new BreadcrumbItem($"Blog {Id}", href: $"/blogs/{ChapId}")
});
< /code>
Моя проблема заключается в том, что для обновления хлебных крошек требуется два щелчка, и их поведение не детерминированно, не могли бы вы помочь мне исправить эту ошибку, чтобы она обновляла хлебные крошки на инициализированных компоненте ?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-blazor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»