/// <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)); } } }
public LayoutPanel() { InitializeComponent(); DataContextChanged += (sender, e) => { LayoutPanelViewModelBase localVM = DataContext as LayoutPanelViewModelBase; Content = FrameController.GetInstence().AllPanel[localVM.PanelInfo.name]; }; }
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"); } }
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"); } }; }
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"); } } }
/// <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);//显示对话框 }
/// <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);//显示对话框 }