net MAUI+Blazor混合版的UI更新



我有一个从本地硬盘上传文件的应用程序。一切都很好,但我无法进行UI更新,所以用户知道上传的进展如何。

在我的blazor页面中,我有这样的:

<button class="btn btn-primary" @onclick="@(async () => await ProcessFiles())" disabled="@processStatus.IsRunning">Procesar</button>
<button class="btn btn-primary" @onclick="@(() => { showEditForm = true; })" disabled="@disableEditButton">Editar</button>
@if (processStatus.IsRunning)
{
<div class="alert alert-warning my-sm-2" role="alert">
<img src="Images/loading.gif" width="50" alt="Cargando..."> Cargando ficheros @currentFileProcessed...
</div>
}

在我的课上,我有这个:

async Task ProcessFiles()
{
processStatus.IsRunning = true;
var progressReporter = new Progress<string>(ReportProgress);
var spConfig = CurrentContext.GetFromContext<SharePointConfig>("SharePointConfig");
await uploadService.Upload(fileList, spConfig, processStatus, progressReporter);
}
void ReportProgress(string message)
{
currentFileProcessed = message;
}

我可以看到流程更新currentFileProcessed中的值,但UI只有在一切完成后才会更新。我想我的用户界面被屏蔽了,但我可以看看如何完成。我尝试过更改委托,使其异步,但没有成功。

您可以尝试调用StateHasChanged()方法来通知UI。例如:

void ReportProgress(string message)
{
currentFileProcessed = message;
StateHasChanged();
}

如果您需要更多信息,请查看此链接。

最新更新