/// <summary> /// 关闭Page /// </summary> /// <param name="uuid">需要关闭的Page的UUID</param> /// <returns>返回关闭的Page的位置</returns> public static int ClosePage(string uuid) { if (pages[uuid] is Pages.ProcessContainer) { ((Pages.ProcessContainer)pages[uuid]).DisposePage();//如果是进程容器则对进程和ws进行关闭 } pages[uuid].Content = null; pages.Remove(uuid); int index = PageItems.IndexOf(PageItems.First(l => l.uuid == uuid)); PageItems.RemoveAt(index); GC.Collect(); return(index); }
/// <summary> /// 替换Page /// </summary> /// <param name="uuid">目标Page的UUID</param> /// <param name="page">替换成的Page,使用new Pages.xxx()初始化</param> /// <param name="title">替换后的Page标题</param> /// <returns>返回替换后的Page的位置</returns> public static int ReplacePage(string uuid, Page page, string title) { //清除旧Page pages[uuid].Content = null; //创建新Page的信息 var PageInfo = new PageItemModel() { PageTitle = title, PageSource = page, uuid = uuid }; page.DataContext = PageInfo; int index = PageItems.IndexOf(PageItems.First(l => l.uuid == uuid)); PageItems[index] = PageInfo; Dispatcher.CurrentDispatcher.Invoke(() => { //(Application.Current.MainWindow as MainWindow).ListView_Page.Items[index] = PageInfo; (Application.Current.MainWindow as MainWindow).ListView_Page.SelectedIndex = index; }); GC.Collect(); //返回Page的Index return(index); }