Когда я выбираю новое значение из раскрывающегося списка (например, изменение типа на передачу, TTS и т. Д.), Пользовательский интерфейс не обновляет. row.
Код: Выделить всё
@if (!HideFilter.UntrackedValue)
{
@if (!InsideDialog || DialogIsOpen)
{
@UiResource.Anifilter_View_Dialog_Header_Create
@UiResource.Anifilter_View_Dialog_SubHeader_Create
@foreach (var (dropAction, i) in _dropActionValues.Select((v, i) => (v, i)))
{
@switch (_dropActionValues[i].UntrackedValue)
{
case AniFilterType.Transfer:
break;
case AniFilterType.TTS:
break;
case AniFilterType.Announcement:
break;
case AniFilterType.ServiceType:
break;
}
}
Add
@((MarkupString)DeleteToolTip.UntrackedValue)
}
else
{
}
}
protected void OnDropActionChanged(int index, TrackedValue value)
{
if (index < 0 || index >= _dropActionValues.Count)
return;
_dropActionValues[index].Update(value);
AniFilter.Update(u =>
{
var setters = new Action[]
{
x => x!.DropAction1 = value,
x => x!.DropAction2 = value,
x => x!.DropAction3 = value,
x => x!.DropAction4 = value,
x => x!.DropAction5 = value
};
setters[index](u);
});
AniFilterChanged.InvokeAsync(AniFilter);
StateHasChanged();
}
private List _dropActionValues =
[
new(null), new(null), new(null), new(null), new(null)
];
private void InitializeDropActionValues()
{
const int expectedCount = 5; // par exemple, selon ton UI
if (_dropActionValues == null || _dropActionValues.Count != expectedCount)
{
_dropActionValues = new List(expectedCount);
for (int i = 0; i < expectedCount; i++)
{
_dropActionValues.Add(new TrackedValue(null));
}
}
}
private void InitializeAnnouncementValues()
{
const int expectedCount = 5;
if (_announcementValues == null || _announcementValues.Count != expectedCount)
{
_announcementValues = new List(expectedCount);
for (int i = 0; i < expectedCount; i++)
{
_announcementValues.Add(new TrackedValue(null));
}
}
}
private void InitializeServiceTypeValues()
{
const int expectedCount = 5;
if (_serviceTypeValues == null || _serviceTypeValues.Count != expectedCount)
{
_serviceTypeValues = new List(expectedCount);
for (int i = 0; i < expectedCount; i++)
{
_serviceTypeValues.Add(new TrackedValue(null));
}
}
}
protected override void OnInitialized()
{
OnNameReadOnlyChanged();
OnDialogOpened();
InitializeDropActionValues();
InitializeAnnouncementValues();
InitializeServiceTypeValues();
AniFilterTypeOptions = new TrackedList(
Enum.GetValues()
.Cast()
.Select(e => new KeyValuePair(e.ToString(), e))
.ToList()
);
base.OnInitialized();
}
protected override ITrackedValue[] ParametersToTriggerRendering =>
[IsNameHidden,
SearchText,
DialogIsOpen,
Filters,
HideFilter,
InsideDialog,
ShowReleaseTable,
IsNameDisabled,
IsImmediatelyValidated,
AniFilter,
IsDialogOpened,
InputValidator,
ShowAddDialog,
IsCreating,
IsContinuousCreateMode,
CreateProgressTracker,
IsCreateFormValid,
AniFilterTypeOptions,
SourceKeyName,
SourceValueName,
IsDropActionDisabled,
IsPatternDisabled,
AudioNames,
ServiceTypeNames,
AnnouncementPlaceholder,
AbwurfCount,
SelectedEntries
];
< /code>
Почему компонент не может повторно Render при изменении элемента списка или добавлен новый элемент?TrackedValueИзменения в выборе выпадающего списка? Возможно, из -за структуры TrackedValue и того, как компоненты синхронизации обрабатывают связывание значений?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -rendering