Именованный элемент XAML не найден FindName

У меня проблемы с поиском именованного объекта, объявленного в XAML, в моем файле codebehind.

Я хочу инициализировать ViewModel из моего View. Однако мне также нужна ссылка на 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 возвращает ноль. Я пытался читать на именных примерах XAML и т. Д., Но, насколько я понимаю, это должен быть простой случай и просто работать, не так ли?

Любые указатели о том, почему это не удается, будет принята с благодарностью. Спасибо!

1 ответ

Решение

Это потому что твой JobsViewModel не является частью визуального дерева, поэтому FindName не находит это. Вы можете получить его через DataContext собственность вместо

Другие вопросы по тегам