【发布时间】:2020-11-22 06:38:56
【问题描述】:
我有 1 个包含数据模板选择器的堆栈布局。我为此使用 BindableLayout。 现在 stacklayout 中的每个子视图都有单独的视图模型。 我想从那个 ViewModel 导航到其他屏幕。
我的数据模板选择器中有以下代码
var pageViewModel = (SomeViewModel)container.BindingContext;
if (view == Type.A)
{
widgetView = new AView();
widgetViewModel = pageViewModel.ServiceProvider.GetService<AViewModel>();
}
else
{
widgetView = new BView();
widgetViewModel = pageViewModel.ServiceProvider.GetService<BViewModel>();
}
widgetView.ViewModel = widgetViewModel;
var navigationParams = new NavigationParameters
{
{ Item, item }
};
widgetViewModel.LoadData(navigationParams);
return new DataTemplate(() => widgetView);
我正在尝试从 CustomView 的 ViewModel 做
await NavigationService.NavigateAsync("PageC");
我正在获取 NavigationService 对象,但应用没有导航到 PageC 如果我在 PageViewModel 的同一行上方调用,则应用程序将重定向到 PageC
【问题讨论】:
-
我会使用 MessagingCenter 从您的虚拟机向您的页面发送一条消息,请求它执行导航
-
您是如何在自定义视图中获得此 NavigationService 的?
-
我自动搞定了,可能是因为我是这样注册ViewModel的。 registry.Register
(); -
@Jason 除了 MessagingCenter 有什么办法吗?我们可以在 App.Xaml.cs 中使用 protected override void ConfigureViewModelLocator() 之类的东西来修改 NavigationService 参数吗?
标签: mvvm xamarin.forms prism