FindName找不到XAML命名元素



在我的代码绑定文件中查找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属性来检索它。

相关内容

  • 没有找到相关文章

最新更新