【发布时间】:2018-09-01 19:29:20
【问题描述】:
我目前在 Xamarin Forms 项目中工作,并尝试将 ReactiveUI 与 Master Detail Page 导航标准 Xamarin Forms 项目一起使用。
在阅读了 ReactiveUI 网站上的文档以及 Kent Boogaart 的“你、我和 ReactiveUI”一书后,我仍然不知道如何使用 ReactiveUI 和 Xamarin Forms 进行主从设置以进行应用导航。
我正在引导应用程序,它会加载根视图(主详细信息页面):
internal sealed class AppBootstrap: ReactiveObject, IScreen
{
public AppBootstrap()
{
RegisterDependencies();
this
.Router
.NavigateAndReset
.Execute(GetRootViewModel())
.Subscribe();
}
public RoutingState Router { get; } = new RoutingState();
public Page GetMainPage() => new RoutedViewHost();
private void RegisterDependencies()
{
Locator.CurrentMutable.RegisterConstant(this, typeof(IScreen));
/*View Model Registrations*/
Locator.CurrentMutable.Register(() => new RootView(), typeof(IViewFor<RootViewModel>));
Locator.CurrentMutable.Register(()=> new MenuView(), typeof(IViewFor<MenuViewModel>));
Locator.CurrentMutable.Register(()=> new DetailView(), typeof(IViewFor<DetailViewModel>));
/*Service Registrations*/
}
private IRoutableViewModel GetRootViewModel()
{
//Add check for login here
return new RootViewModel(this);
}
}
然后在我的 RootViewModel 中:
public sealed class RootViewModel: ViewModelBase
{
private Page _masterPage;
private Page _detailPage;
public RootViewModel(IScreen hostScreen) : base(hostScreen)
{ }
public Page MasterPage
{
get => _masterPage;
set => this.RaiseAndSetIfChanged(ref _masterPage, value);
}
public Page DetailPage
{
get => _detailPage;
set => this.RaiseAndSetIfChanged(ref _detailPage, value);
}
public override Action<CompositeDisposable> OnActivated()
{
//What do I do?
}
}
在谷歌搜索和搜索堆栈溢出之后,这里似乎没有答案,'documentation' 也没有太大帮助。 ReactiveUI 网站上列出的示例以及所有在线博客文章都只处理单页导航;与大多数现实世界的手机应用程序实现的更标准的基于抽屉的导航相反。
任何关于做什么的帮助或指向实际工作的基于主详细信息页面的导航的链接都将非常有帮助,因为我刚刚尝试找到任何实质内容时失败了。
【问题讨论】:
-
你介意在GitHub.com/ReactiveUI/website 上打开一个问题吗?似乎我们需要修复文档中的一个重要漏洞。
-
@GlennWatson 没问题,我会打开一个问题。
-
你好安德鲁。我很好奇你最后是怎么解决这个问题的?我在这里做同样的事情,因为我正在尝试路由链接到主详细信息页面的视图模型,但我不知道如何做到这一点。
标签: xamarin.forms navigation master-detail reactiveui