私の質問に似たものがいくつか見受けられました(たとえばNavigate to a Page of another Class Library)が、そこに問題の解決策が見つかりませんでした。したがって:UWPアプリ - クラスライブラリのページに移動します
私はUWP VBアプリケーションを持っています。コードの再利用を容易にするために、私はメイン・プロジェクトでもちろん参照している、クラス・ライブラリーでよく使われるいくつかのコンポーネントを移動することに決めました。これらの構成要素の一つは、私のアプリのApp.xaml.vbでログイン・ページ(LoginPage.xamlとLoginPage.xaml.vb)
で、標準VS2015のテンプレートコードを使用して、OnLaunchedイベントハンドラでは、私が書いた:
If rootFrame.Content Is Nothing Then
rootFrame.Navigate(GetType(MyLibrary.LoginPage), e.Arguments)
End If
マイアプリとNullReferenceExceptionと、この時点で失敗した(これのvbCrLf連結は愚かですね!):
例外:{「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」}
が処理します:False
メッセージ: "System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。" "MyLibrary.MyLibrary_XamlTypeInfo.XamlUserType.ActivateInstanceで()" & & &のvbCrLfのvbCrLf & "Windows.UI.Xaml.Controls.Frame.Navigate(タイプsourcePageType、オブジェクトパラメータ)の" My.Test_UWP.Appで&のvbCrLf &」。 (LaunchActivatedEventArgs E)」
OnLaunched私はGenerate library layout
ビルドオプションを有効にするために同様の問題に関するいくつかの提案を見てきましたが、私は私の環境ではそのようなオプションを参照してくださいません。サイドノートでは
は、最初に私の計画は、最初のいくつかの構成データを提供し、イベントをサブスクライブすることによって、このページに移動しました:
Dim l As New MyLibrary.LoginPage(Me.appSettings)
AddHandler l.DidLogin, AddressOf AfterLogin
rootFrame.Navigate(l.GetType)
は、これは同じとNullReferenceExceptionにすぎませんでした。このコードを実行すると、多分詳細な情報が提供されます。失敗したコードはXmlTypeInfo.g.vbである:
Public Overrides Function ActivateInstance() As Global.System.Object
Return Activator.Invoke()
End Function
私はここ損失のビットでよ、ので、任意の助けが理解されるであろう。
パラメータを使用してMyLibrary.LoginPageクラスをインスタンス化しようとする試みは間違っていました。適切なのは 'rootFrame.Navigate(GetType(MyLibrary.LoginPage)、params)'のような必要なパラメータを渡し、ターゲットページの 'OnNavigatedTo'ハンドラで読み込むことです。 –