在我的代码绑定文件中查找XAML中声明的命名对象时遇到问题。
我想从我的视图中初始化一个ViewModel。然而,我也需要在我的代码隐藏文件中引用ViewModel(基本上是为了导航支持、处理事件等,而我在ViewModel中无法轻松做到这一点)
<navigation:Page.DataContext>
<vm:JobsViewModel x:Name="ViewModel" />
</navigation:Page.DataContext>
然而,当我试图访问代码背后的ViewModel时,我得到了一个空引用异常:
Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
MyBase.OnNavigatedTo(e)
ViewModel.Initalize() '<-- Exception here
End Sub
更多的研究表明,InitalizeComponent
中对"ViewModel"的FindName
调用返回null。我试着阅读XAML命名空间等,但就我所见,这应该是一个简单的案例,而且很有效,不是吗?
任何关于这一失败原因的建议都将不胜感激。谢谢
这是因为您的JobsViewModel
不是可视化树的一部分,所以FindName
找不到它。您可以通过DataContext
属性来检索它。