我的问题解决了,这是异步线程导致问题。
如有和我一样情况的,请调用Window对象的Dispatcher的Dispatch()方法
这个问题虽然很常见,而且一般来讲我也会注意到线程问题,但是由于他的提示是“No view found for id 0x7f08014b” 这很容易误导我们的判断,让我以为是导航问题,实则本质还是异步需要调用控件线程更新UI
最后,希望这个问题能帮助更多的人~
我新建了一个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布局是要根据服务器传来的数据动态变化的,我想知道这个问题是否是可以解决的
再次由衷的感谢您的答复