Exrin Isolates和MasterDetailContainer

时间:2017-11-11 22:32:45

标签: exrin

使用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;
            }
        }
    } 

1 个答案:

答案 0 :(得分:0)

如果你需要混合堆栈,那么你将把它放在隔离区中,那么在一个位置定义所有堆栈和密钥是个好主意。

但请记住,隔离区旨在将大块代码拆分为单独的模块。对于任何给定的项目,我只建议最多3个隔离物。使用Feature Grouping是一种很好的方法,可以在项目中构建Views / ViewModels,如果你有一个大型项目,但对于隔离区来说还不够大。