0

在我的代码隐藏文件中查找在 XAML 中声明的命名对象时遇到问题。

我想从我的视图中初始化一个视图模型。但是,我还需要在我的代码隐藏文件中引用 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

更多研究表明,FindName对“ViewModel”的调用InitalizeComponent返回 null。我尝试阅读 XAML 名称范围等,但据我所知,这应该是一个简单的案例并且可以正常工作,不是吗?

任何关于为什么失败的指针将不胜感激。谢谢!

4

1 回答 1

2

那是因为你JobsViewModel不是可视化树的一部分,所以FindName没有找到它。DataContext您可以改为通过属性检索它。

于 2011-06-20T11:03:49.957 回答