예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }