我正在使用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无法绑定在一起。