Когда компонент теперь выбран, я вижу, что значок удаления не отображается. становится включенным, но его отключенное/включенное состояние правильно установлено кодом.
Однако я мог бы вызвать StateHasChanged, и это отобразило бы правильное состояние, но, к сожалению, привело бы к другим проблемам, скорее всего связанным к используемым динамическим компонентам.
Мне удалось воспроизвести свою проблему на очень простом примере, который можно найти здесь:
https://try.mudblazor.com/snippet /QYcIuybXTevcExgs
Здесь я также попытаюсь обрисовать код:
Код: Выделить всё
@inherits LayoutComponentBase
BlazorRepro
@Counter
@Body
@code {
Container? container;
int Counter { get; set; }
protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);
if (container != null && firstRender)
container.SelectionChanged += OnSelectionChanged;
}
private void OnSelectionChanged()
{
System.Diagnostics.Trace.WriteLine($"Counter incremented to : {++Counter}");
}
}
Код: Выделить всё
@ChildContent
@code {
[Parameter]
public RenderFragment? ChildContent { get; set; }
public event Action? SelectionChanged;
public void Select()
{
SelectionChanged?.Invoke();
}
}
Код: Выделить всё
@ChildContent
@code {
[CascadingParameter]
public Container Container { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
private void Select()
{
Container.Select();
}
}
Код: Выделить всё
@page "/"
Index
Click me to select
Если нажать «Нажмите на меня, чтобы выбрать», я бы ожидал счетчик в основном макете должен быть увеличен, но, к сожалению, это происходит только в том случае, если обработчик событий основного макета также вызывает StateHasChanged.
Я не совсем уверен, откуда возникла проблема, но Я знаю, что такая привязка в целом должна работать.
Заранее спасибо за помощь и предложения!
Подробнее здесь: https://stackoverflow.com/questions/783 ... -be-broken