Именованный элемент 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
собственность вместо