Sl 4, MVVM: Когда виртуальная машина будет доступна для просмотра? - PullRequest
0 голосов
/ 22 марта 2011


У меня есть вид и установить его DataContext для соответствующего ViewModel. В обработчике событий Loaded в выделенном коде View я хочу установить некоторые свойства на виртуальной машине. Тем не менее, DataContext представления является нулевым в этой точке.
В xaml:

Loaded="UserControl_Loaded"
<UserControl.Resources>
    <viewModels:PageViewModel x:Key="vm" />
</UserControl.Resources>

В обработчике Loaded, page.xaml.cs:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
  PageViewModel pvm = this.DataContext as PageViewModel;
  System.Diagnostics.Debug.WriteLine("pvm is " + ((null == pvm) ? "null" : pvm.ToString()));
}

Я что-то не так делаю или виртуальная машина еще не доступна, когда View запускает событие Loaded?

ОБНОВЛЕНИЕ: реальная проблема заключается в том, что виртуальная машина не подключается к представлению. В UserControl_Loaded pvm имеет значение null.
В настоящее время я устанавливаю DataContext для корневого элемента макета; это должно быть установлено на UserControl? Если да, то как?

Спасибо за понимание ...

1 Ответ

1 голос
/ 22 марта 2011

Заменить

<UserControl.Resources>
    <viewModels:PageViewModel x:Key="vm" />
</UserControl.Resources>

на:

<UserControl.DataContext>
    <viewModels:PageViewModel />
</UserControl.DataContext>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...