【问题标题】:NullReferenceException on ListBox(different page)列表框上的 NullReferenceException(不同页面)
【发布时间】:2013-11-21 08:59:34
【问题描述】:

所以我面临这个问题,我有 2 个页面,ViewAccount 和 MainPage。

在 MainPage 中有一个名为 SavedAccountsLst 的 ListBox。问题是在 ViewAccount 页面中,一旦我单击一个按钮,它就会抛出一个NullReferenceException

这是我在 ViewAccount 中使用的代码:

Private Sub Delete_Account_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim Storage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
    Storage.DeleteFile("SafeLockPLUS/SavedAccounts/" & PageTitle.Text)
    MessageBox.Show(PageTitle.Text & " has been deleted.", "Deleted", MessageBoxButton.OK)
    Dim aa = TryCast(DirectCast(Application.Current, App).RootFrame.Content, MainPage)
    aa.SavedAccountslst.ItemsSource = Nothing
    Dim directory As String = "./SafeLockPLUS/SavedAccounts/*.*"
    Dim filenames As String() = Storage.GetFileNames(directory)
    aa.SavedAccountslst.ItemsSource = filenames
    NavigationService.GoBack()

End Sub

它的意思是它会从viewaccount页面中删除文件并清除SavedAccountList中的项目并在ViewAccount页面中重新加载它们然后返回。

【问题讨论】:

  • 究竟哪一行引发了异常?
  • aa.SavedAccountslst.ItemsSource = 无
  • 如果您在 ViewAccount 中,则 App.RootFrame.ContentViewAccount,而不是 MainPage,因此会出现错误

标签: vb.net windows-phone-7 listbox nullreferenceexception


【解决方案1】:

当您在ViewAccountPage 上时执行此代码,基本上这意味着RootFrame.Content 包含ViewAccountPage 页面,而不是MainPage

Dim aa = TryCast(DirectCast(Application.Current, App).RootFrame.Content, MainPage)

您正在尝试将 RootFrame.Content 转换为 MainPage 并且您的转换失败,因此您在 aa 变量中得到 null

【讨论】:

  • 我无法访问 ViewAccount 因为我已经在 ViewAccount 中并且我添加的唯一原因是:Dim aa = TryCast(DirectCast(Application.Current, App).RootFrame.Content, MainPage) 是要从 ViewAccount 页面进行某种引用,我调用 aa.SavedAccountslst.ItemsSource = Nothing,告诉从 viewaccount 页面清除名为 Savedaccountslst 的列表框。
  • 你很清楚RootFrame.Content中没有MainPage?
  • 你访问的是RootFrame.Current,但是你明白里面有一个ViewAccountPage吗?
猜你喜欢
  • 2019-05-10
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 2020-09-19
  • 2015-06-25
  • 1970-01-01
相关资源
最近更新 更多