已关闭 - Caliburn Micro Navigate方法未将View的DataContext设置为ViewModel

时间:2016-07-31 12:41:13

标签: c# xaml uwp caliburn.micro

我正在使用Caliburn Micro 3.0.1构建UWP并遵循HelloUWP样本。

当我调用_navigationService.For<SomeViewModel>().Navigate()时,除了ShellViewModel之外,它没有将View的DataContext设置为ViewModel,我认为它们在App.xaml.cs的DisplayRootViewFor<ShellViewModel>()中绑定在一起。

如果Message.Attach上的Frame设置为cm:Message.Attach="[Event Loaded] = [SetupNavigationService($source)],则始终将View的DataContext设置为ShellViewModel,如果Frame的DataContext设置为x:Null,则它不会设置为任何内容。

这是正常行为还是错误? 有没有人有解决方法?

更新最后,我解决了。
首先,我将容器的ViewModel注册为

_container.PerRequest<Screen, SomeViewModel>();

后来我改为

_container.PerRequest<SomeViewModel>();

我从未想过使用ViewModel将注册类作为服务,因为实现会导致ViewModelLocator找不到View的ViewModel,这反过来会导致ViewModel和View无法绑定在一起。

0 个答案:

没有答案