【MAUI】在MAUI中,如何打开一个新的窗口之后如何再次设置其Page内容

studio XFE 25 信誉分
2024-04-24T01:46:11.3533333+00:00

首先感谢您能阅读我的问题,我的问题如下:

我新建了一个window对象,然后创建了打开了这个窗口,我需要在一些异步操作后将这个窗口的Page属性设置为别的Page对象,而不是创建窗口时的page对象

var window = new Window(new MyCustomPage());
Application.Current.OpenWindow(window);

//一些异步操作...

window.Page = new MySecCustomPage();

而当我这样做的时候则会报错:
Java.Lang.IllegalArgumentException

Message=No view found for id 0x7f08014b (com.xxx.xccchatroom:id/navigationlayout_content) for fragment NavigationRootManager_ElementBasedFragment{cf438c1} (691ec865-25ab-4c65-ad71-bb3f6dc24f00 id=0x7f08014b)

我怀疑是需要使用类似导航才能改变Window对象的Page属性

因此我使用了:

window.Navigation.PushAsync(page, true);//第一次尝试
window.Navigation.InsertPageBefore(window.Page, page);//第二次尝试
window.Navigation.PushModalAsync(page, true);//第三次尝试

但是我发现他们好像都不管用,页面没有跳转也没有变化,而是卡死了

所以我想知道如何在已经打开window窗口后,更换window里面显示的内容,不用AppShell布局以及其导航,因为这个窗口里面是否是AppShell布局还是直接Page布局是要根据服务器传来的数据动态变化的,我想知道这个问题是否是可以解决的

再次由衷的感谢您的答复

.NET
.NET
基于 .NET 软件框架的 Microsoft 技术。
26 个问题
.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
36 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. studio XFE 25 信誉分
    2024-04-24T01:55:23.07+00:00

    我的问题解决了,这是异步线程导致问题。

    如有和我一样情况的,请调用Window对象的Dispatcher的Dispatch()方法

    这个问题虽然很常见,而且一般来讲我也会注意到线程问题,但是由于他的提示是“No view found for id 0x7f08014b” 这很容易误导我们的判断,让我以为是导航问题,实则本质还是异步需要调用控件线程更新UI

    最后,希望这个问题能帮助更多的人~