Wpf 如何从不同XAML文件中的代码隐藏中访问XAML元素?

Wpf 如何从不同XAML文件中的代码隐藏中访问XAML元素?,wpf,vb.net,xaml,Wpf,Vb.net,Xaml,以下代码位于使用NavigationWindow的WPF项目中。代码隐藏有几种重写方法。在下面的覆盖中,必须访问“favoritesItem”favoritesItem'位于单独的.XAML文件中。显然,我没有正确地访问它。这是覆盖: Protected Overrides Sub OnClosed(e As EventArgs) MyBase.OnClosed(e) ' Persist the list of favorites Dim f As IsolatedStorageFi

以下代码位于使用NavigationWindow的WPF项目中。代码隐藏有几种重写方法。在下面的覆盖中,必须访问“favoritesItem”favoritesItem'位于单独的.XAML文件中。显然,我没有正确地访问它。这是覆盖:

Protected Overrides Sub OnClosed(e As EventArgs)
  MyBase.OnClosed(e)
  ' Persist the list of favorites
  Dim f As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForAssembly()
  Using stream As New IsolatedStorageFileStream("myFile", FileMode.Create, f)
    Using writer As New StreamWriter(stream)
      For Each item As TreeViewItem In DirectCast(System.Windows.Application.Current.Properties("favoritesItem"), TreeViewItem).Items
        writer.WriteLine(TryCast(item.Tag, String))
      Next
    End Using
  End Using
End Sub
此错误是:

Object reference not set to an instance of an object

访问不同文件中的XAML元素[已编辑]的正确方法是什么?

您在这里想做什么?您发布的代码与访问另一个文件中的XAML对象无关。该属性只是一个字典,用于在应用程序的不同部分之间以线程安全的方式共享数据。在我的经验中,它很少被使用——事实上,我从未见过它被使用过。您将得到一个空异常,因为您可能没有首先将“favoritesItem”添加到字典中


如果要从另一个类访问命名的XAML元素,则需要通过公共属性公开它。命名的XAML元素在其定义类中创建私有成员字段。

我知道对象可能重复返回NullReferenceException,但这不是因为我没有正确访问属性吗?强制转换没有任何要返回的内容,因为该属性实际上没有被访问,是吗?我假设如果我更正了属性引用,那么我将从树视图接收数据。我不明白的是如何访问该属性。你发现了我的问题。我正在跟踪一个项目,没有发现该属性必须手动加载到字典中。我关于“另一个文件中的对象”的措辞可能写得不好。我实际上是想从另一个页面访问一个元素TreeViewItems的数据。那么,在标题和帖子中把它作为一个元素会更好吗?顺便说一句,我如何公开一个命名的XAML元素?正如答案>中所说的,如果你想从另一个类访问一个命名的XAML元素,你需要通过一个公共属性公开它