2017-06-27 3 views
0

私の質問に似たものがいくつか見受けられました(たとえば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 

私はここ損失のビットでよ、ので、任意の助けが理解されるであろう。

+0

パラメータを使用してMyLibrary.LoginPageクラスをインスタンス化しようとする試みは間違っていました。適切なのは 'rootFrame.Navigate(GetType(MyLibrary.LoginPage)、params)'のような必要なパラメータを渡し、ターゲットページの 'OnNavigatedTo'ハンドラで読み込むことです。 –

答えて

0

ブランクページをクラスライブラリに追加し、App.xaml.vbからそのページに移動しようとしましたが、実際のLoginPage.xamlファイルに問題がありました。

いくつかのパラメータを渡すためにクラスコンストラクタがオーバーロードされていましたが、明らかにこれは正しい方法ではありませんでした。オーバーロードされたコンストラクタを削除すると、アプリケーションはページをクラスライブラリに正しく表示できました。

関連する問題