UWP应用程序 - 导航到类库中的Page

时间:2017-06-27 08:02:06

标签: vb.net visual-studio-2015 windows-10 uwp-xaml

我见过一些类似于我的问题(例如Navigate to a Page of another Class Library),但我找不到解决问题的方法。所以:

我有一个UWP VB应用程序。为了方便代码重用,我决定在类库中移动一些常用的组件,我当然在我的主项目中引用它。其中一个组件是登录页面(LoginPage.xaml和LoginPage.xaml.vb)

在我的应用程序的App.xaml.vb中,使用标准的VS2015模板代码,在OnLaunched事件处理程序中,我写道:

    If rootFrame.Content Is Nothing Then
            rootFrame.Navigate(GetType(MyLibrary.LoginPage), e.Arguments)
    End If

我的应用程序此时失败,出现NullReferenceException(此vbCrLf连接看起来很傻!):

  

异常:{“对象引用未设置为对象的实例。”}       处理:假       消息:“System.NullReferenceException:对象引用未设置为对象的实例。” &安培; vbCrLf& “at MyLibrary.MyLibrary_XamlTypeInfo.XamlUserType.ActivateInstance()”& vbCrLf& “在Windows.UI.Xaml.Controls.Frame.Navigate(输入sourcePageType,Object parameter)”& vbCrLf& “在My.Test_UWP.App.OnLaunched(LaunchActivatedEventArgs e)”

我已经看到一些关于类似问题的建议,以启用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

我在这里有点亏,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我只在我的类库中添加了一个BlankPage,并试图从App.xaml.vb导航到它并且它有效,因此问题出在实际的LoginPage.xaml文件中。

我重载了类构造函数以传递一些参数,显然这不是正确的方法。删除重载的构造函数允许应用程序在类库中正确显示页面。