我在哪里可以为MasterDetailPage
和Xamarin Forms
找到一个好的示例MvvmCross
。
当我的项目发出此错误时:
MvvmCross.Exceptions.MvxException:无法替换MainPage root?
看看我的代码: source
答案 0 :(得分:2)
从MvvCross v6.1.2开始,该问题仍然存在,但通常不会将其指定为“ bug”(因此,不确定在下一发行版中是否将以任何方式更改它)。 / p>
关于收到此异常情况的信息显然太少了,但原因之一可能是您可能没有为“母版(菜单)”页面定义“标题”值在xaml中。
Title="Never seen and never used title which still throws the exception"
据我所知,MvvmCross具有引发该异常的一些内部逻辑,因为定义菜单页面意味着(显式)创建MasterDetails包装器页面,该页面需要获得一些标题,但是,该标题仍不被视为使用“详细信息”页面的标题。
以防万一,在此处添加一些使用MvvmCross组织MasterDetails页面流的路线图:
MasterDetails页面必须包含两个部分:
菜单(最初是MasterPage,即包装在MasterDetails页面中的某些布局):
[MvxMasterDetailPagePresentation(Position = MasterDetailPosition.Master,
WrapInNavigationPage = false, NoHistory = true)]
public partial class HomeMasterDetailMenuPage : MvxContentPage<HomeMasterDetailMenuViewModel>
实际上是内容页面:
[MvxMasterDetailPagePresentation(Position = MasterDetailPosition.Detail,
WrapInNavigationPage = true, NoHistory = true)]
public partial class HomeMasterDetailRootPage : MvxContentPage<HomeMasterDetailRootViewModel>
Xaml(设计)文件具有任何常规MvvmCross XF Content页面都具有的定义(同样,请不要忘记为Menu页面定义添加Title
属性)。< / p>
提到的所有页面的ViewModels也都定义为常规ViewModels-这里没有技巧。
唯一的窍门是从其他ViewModel激活到这些页面的导航:
private async Task ProcessLogin()
{
await NavigationService.Navigate<HomeMasterDetailMenuViewModel>();
await NavigationService.Navigate<HomeMasterDetailRootViewModel>();
}
答案 1 :(得分:0)
如果您使用MvvmCross
的游乐场应用,请尝试再次获取其来源,可能问题已根据this comment