我想導航到Xamarin表單導航頁面。不過,我正在嘗試在Frame首次加載一些「本機」UWP頁面後執行此操作。AccessViolationException引發導航到Xamarin表單頁面
this.rootFrame.Navigate(page.GetType(), param);
此代碼的結果爲AccessViolationException
。頁面對象是一個Xamarin.Forms.Page,但我也嘗試過使用NavigationPage(page)包裝器。
我意識到普通的XF導航是通過Navigation.PushAsync等完成的,但我在XF應用程序和導航基礎設施尚未初始化的時候。
這是我如何創建我的初始NavigationPage
XFormsApp.MainPage = new NavigationPage(contentPage);
var converter = Mvx.Resolve<IMvxNavigationSerializer>();
var requestText = converter.Serializer.SerializeObject(request);
_rootFrame.Navigate(mainPage.GetType(), requestText);
我想創建一個混合UWP應用程序,與本地的頁面開始,後來推出了一些XF頁面。官方Xamarin Forms samples有這樣的iOS和Android的例子
」rootFrame.Navigate方法中第一個參數的類型是窗體:WindowsPage「這是不正確的。該類型是「System.Type」。將NavigationPage作爲類型傳遞正是MVVMCross所做的「所有UWP」應用程序,您可以在這裏看到https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Forms/Example001XAML。請參閱Presenter.Your DependenmcyService方法不適用於MVVMCross,即使它確實如此,我不認爲「回頭」是我的要求 –
也許我的描述不清楚。該類型是['sourcePageType'](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.frame#remarks)而不是'System.Type'。所以當你通過帶有NavigationPage(page)包裝器的'Xamarin.page'時,它會拋出異常。 –
如果這是正確的「你知道它爲什麼拋出一個異常,爲什麼它會是AccessViolationException比類似InvalidArgumentException更大,但更重要的是傳遞一個NavigationPage類型作爲第一個參數就是它在MVVMCross中的工作原理。 https://github.com/MvvmCross/MvvmCross/blob/develop/MvvmCross-Forms/MvvmCross.Forms.Uwp/Presenters/MvxFormsUwpPagePresenter.cs#L30。我會爲您創建一個更簡單的repro,但我的環境目前已被擰緊 –