/// <summary>
        /// 加载菜单
        /// </summary>
        /// <param name="item">父级菜单项</param>
        /// <param name="panelStruct">菜单项列表</param>
        void LoadMenu()
        {
            Menu_View_Window.Items.Clear();//清空原本窗口菜单

            foreach (var kv in FrameController.GetInstence().AllPanelInfo)
            {
                if (kv.Value.panelType == PanelType.Page && kv.Value.link.Count != 0)
                {
                    MenuItem i = new MenuItem();//新建菜单项i
                    BindingOperations.SetBinding(i, MenuItem.HeaderProperty, new Binding()
                    {
                        Path = new PropertyPath("Frame.FrameDataText[Page_" + kv.Key + "]")
                    });//绑定菜单项的Header
                    foreach (string t in kv.Value.link)
                    {
                        i.Items.Add(CreateCheckableMenuItem(t));
                    }
                    Menu_View_Window.Items.Add(i);
                }
            }
            Separator s = new Separator();

            Menu_View_Window.Items.Add(s);
            foreach (var kv in FrameController.GetInstence().AllPanelInfo)
            {
                if (kv.Value.panelType == PanelType.Window)
                {
                    ViewModelLocator.instence.Main.WindowActionList.Add(kv.Key, true);//在窗口显示列表中新增一项
                    Menu_View_Window.Items.Add(CreateCheckableMenuItem(kv.Key));
                }
            }
        }
示例#2
0
 public static FrameController GetInstence()
 {
     if (instence == null)
     {
         instence = new FrameController();
     }
     return(instence);
 }
示例#3
0
 public LayoutPanel()
 {
     InitializeComponent();
     DataContextChanged += (sender, e) =>
     {
         LayoutPanelViewModelBase localVM = DataContext as LayoutPanelViewModelBase;
         Content = FrameController.GetInstence().AllPanel[localVM.PanelInfo.name];
     };
 }
示例#4
0
        public void SaveUserVisible <T>(MsgBase msg)
        {
            MsgVar <string> tmpMSg = msg as MsgVar <string>;

            RWXml.TemporaryAddPropertySetContent(
                PanelInfo.name,
                userVisible.ToString(),
                FileFolder.LinkPath(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout") + tmpMSg.parameter + ".xml",
                "UserVisible"
                );
        }
 public FramePackage(string name)
 {
     this.name = name;
     if (File.Exists(AppController.GetInstence().appPath + "Package/" + name + ".dll"))
     {
         targetDll = Assembly.LoadFile(AppController.GetInstence().appPath + "Package/" + name + ".dll");
     }
     else if (File.Exists(AppController.GetInstence().appPath + "Frame/" + FrameController.GetInstence().frameName + "/Package/" + name + ".dll"))
     {
         targetDll = Assembly.LoadFile(AppController.GetInstence().appPath + "Frame/" + FrameController.GetInstence().frameName + "/Package/" + name + ".dll");
     }
     else
     {
         targetDll = Assembly.LoadFile("D:/OfficialProject/Model_Struct_Builder/BasicLib/bin/Debug/BasicLib.dll");
     }
 }
示例#6
0
        public void LoadPanel()
        {
            foreach (var panel in FrameController.GetInstence().AllPanelInfo)//创建VM时,添加LayoutItem
            {
                switch (panel.Value.panelType)
                {
                case PanelType.Page:
                    LayoutPageViewModel tmpPage = new LayoutPageViewModel(panel.Value);
                    pages.Add(tmpPage);
                    break;

                case PanelType.Window:
                    LayoutWindowViewModel tmpWindow = new LayoutWindowViewModel(panel.Value);
                    windows.Add(tmpWindow);
                    break;
                }
            }
            MsgCenter.SendMsg(new MsgVar <string>(AllAppMsg.LoadLayout, "Last"));
        }
        public MainWindow()
        {
            InitializeComponent();
            this.RegistSelf(AllAppMsg.PanelCreateComplete, StartLoadPanel <MsgBase>);

            this.RegistSelf(AllAppMsg.LoadLayout, (msg) =>
            {
                MsgVar <string> tmpMsg = (MsgVar <string>)msg;
                LoadLayout(tmpMsg.parameter);
            });
            this.RegistSelf(AllAppMsg.SaveLayout, (msg) =>
            {
                MsgVar <string> tmpMsg = (MsgVar <string>)msg;
                SaveLayout(tmpMsg.parameter);
            });

            Closing += (sender, e) => { if (!string.IsNullOrEmpty(FrameController.GetInstence().frameName))
                                        {
                                            SaveLayout("Last");
                                        }
            };
        }
示例#8
0
        public void LoadUserVisible <T>(MsgBase msg)
        {
            MsgVar <string> tmpMSg = msg as MsgVar <string>;

            userVisible = bool.Parse(RWXml.TemporaryReadContent(
                                         PanelInfo.name,
                                         FileFolder.LinkPath(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout") + tmpMSg.parameter + ".xml",
                                         "UserVisible"
                                         ));
        }
 /// <summary>
 /// 用于创建所有控制器的单例
 /// </summary>
 void CreateInstence()
 {
     FrameController.GetInstence();
 }
 void SaveLayout(string LayoutName)
 {
     if (!string.IsNullOrEmpty(LayoutName))
     {
         XmlLayoutSerializer serializer = new XmlLayoutSerializer(WorkingArea);                                                                                            //创建序列化器
         serializer.Serialize(FileFolder.LinkPath(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout") + LayoutName + ".xml"); //根据路径储存布局
         MsgCenter.SendMsg(new MsgVar <string>(AllAppMsg.SaveUserVisible, LayoutName));
     }
 }
        void LoadLayout(string LayoutName)
        {
            if (!string.IsNullOrEmpty(LayoutName))
            {
                using (AppController.GetInstence().LoadLayoutState.SetScope())
                {
                    MsgCenter.SendMsg(new MsgVar <string>(AllAppMsg.LoadUserVisible, LayoutName));
                    List <string> tmp = new List <string>(ViewModelLocator.instence.Main.WindowActionList.Keys);
                    foreach (string t in tmp)
                    {
                        ViewModelLocator.instence.Main.WindowActionList[t] = true;
                    }

                    MsgCenter.SendMsg(new MsgVar <string>(AllAppMsg.LoadUserVisible, LayoutName));
                    XmlLayoutSerializer serializer = new XmlLayoutSerializer(WorkingArea);//创建序列化器
                    serializer.Deserialize(FileFolder.LinkPath(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout") + LayoutName + ".xml");
                }
            }
        }
示例#12
0
 /// <summary>
 /// 显示 加载布局 的对话窗口
 /// </summary>
 public static void ShowLoadLayoutWindow()
 {
     ShowDialogue(new List <FormStruct>
     {
         new FormStruct
         {
             name       = "布局:",
             type       = FormItemType.DropDown,
             parameters = FileFolder.GetAllFileName(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout")
         }
     }, AllAppMsg.LoadLayout);//显示对话框
 }
示例#13
0
        /// <summary>
        /// 显示 保存布局 的对话窗口
        /// </summary>
        public static void ShowSaveLayoutWindow()
        {
            List <string> tmp = FileFolder.GetAllFileName(AppController.GetInstence().appPath, "Frame", FrameController.GetInstence().frameName, "Layout"); //在布局文件夹中查找所有布局

            tmp.Remove("Common");                                                                                                                           //移除 默认布局,默认布局禁止用户修改
            tmp.Remove("Last");                                                                                                                             //移除 上次退出时的布局,该布局禁止用户修改
            ShowDialogue(new List <FormStruct>
            {
                new FormStruct
                {
                    name       = "布局:",
                    type       = FormItemType.InputDropDown,
                    parameters = tmp,
                }
            }, AllAppMsg.SaveLayout);//显示对话框
        }