我正在尝试在我的 blazor-server-side 应用程序中更改用于标题的字符串。但我无法让 UI 更新。
我尝试使用 StateHasChanged(),但是没有用,所以我环顾四周,发现在制作的FlightFinder Demo 上,它有一个 OnChange 事件 Action,所以我正在尝试实现它。
在我尝试刷新浏览器之前它一直有效,然后我遇到了这个错误
System.InvalidOperationException: '当前线程与渲染器的同步上下文无关。在触发渲染或修改渲染期间访问的任何状态时,使用 Invoke() 或 InvokeAsync() 将执行切换到渲染器的同步上下文。
这就是我所拥有的:
private string _title = "TestSite";
public string Title => _title;
public event Action OnChange;
public void ChangePage(string pageName)
{
_title = pageName;
NotifyStateChanged();
}
private void NotifyStateChanged(int navigationType = 0)
{
OnChange?.Invoke();
}
我所要做的就是调用 ChangePage("some Page Title") 并且它可以工作,除非像我提到的那样我尝试刷新。
我只是想通过另一个组件更改一个组件上的字符串,这听起来并不那么疯狂。如果有更好的方法来制作标题或更改其他组件的内容,我很想听听。
那么,我该怎么做才能确保 m 调用方法在正确的线程上?还是有其他更有效的方法来更改标题?
先感谢您!