Именованный элемент XAML не найден FindName - PullRequest
0 голосов
/ 20 июня 2011

У меня проблемы с поиском именованного объекта, объявленного в 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 Ответ

2 голосов
/ 20 июня 2011

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

...