使用Exrin Isolates方法时,您可以在每个Isolater中定义堆栈。如何将它与MasterDetailContainer结合使用? 例如,如果我想要旧方法中的菜单,我会创建一个ViewContainer并将其传递给菜单的堆栈和另一个用于页面的菜单,但是使用Isolates我会有很多堆栈。我应该如何构建ViewContainer,或者我应该只有一个主堆栈并仅使用Isolates来隔离视图和视图模型?
public class MainViewContainer : Exrin.Framework.ViewContainer, IMasterDetailContainer
{
private readonly MasterDetailPage r_MasterPage;
public MainViewContainer(MenuStack i_MenuStack, MainStack i_MainStack)
: base(eContainer.Main.ToString())
{
r_MasterPage = new MasterDetailPage();
MasterDetailProxy masterProxy = new MasterDetailProxy(r_MasterPage);
NativeView = masterProxy.View;
Proxy = masterProxy;
DetailStack = i_MainStack;
MasterStack = i_MenuStack;
RegionMapping.Add(eRegions.Menu, ContainerType.Master);
RegionMapping.Add(eRegions.Main, ContainerType.Detail);
}
public IHolder MasterStack { get; set; }
public IHolder DetailStack { get; set; }
public IMasterDetailProxy Proxy { get; set; }
public bool IsPresented
{
get
{
return r_MasterPage.IsPresented;
}
set
{
r_MasterPage.IsPresented = value;
}
}
public void SetStack(ContainerType i_ContainerType, object i_Page)
{
switch (i_ContainerType)
{
case ContainerType.Detail:
r_MasterPage.Detail = i_Page as Page;
break;
case ContainerType.Master:
r_MasterPage.Master = i_Page as Page;
break;
}
}
}
答案 0 :(得分:0)
如果你需要混合堆栈,那么你将把它放在隔离区中,那么在一个位置定义所有堆栈和密钥是个好主意。
但请记住,隔离区旨在将大块代码拆分为单独的模块。对于任何给定的项目,我只建议最多3个隔离物。使用Feature Grouping是一种很好的方法,可以在项目中构建Views / ViewModels,如果你有一个大型项目,但对于隔离区来说还不够大。