示例#1
0
        //获得容器最上面页面的名称
        public static string GetTop(Panel p)
        {
            //获取页面缓存
            List <NameAndFrame> pages = GetPanelPages(p);

            if (pages.Count == 0)
            {
                return(null);
            }
            NameAndFrame naf = pages[pages.Count - 1];

            return(naf.name);
        }
示例#2
0
        private static void OnPageNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Panel c = (Panel)d;
            //获取页面缓存
            List <NameAndFrame> pages = GetPanelPages(c);

            //旧页面变为不可见
            if (e.OldValue != null)
            {
                NameAndFrame oldNaf = GetChildren((string)e.OldValue, pages);
                if (oldNaf != null)
                {
                    oldNaf.frame.Visibility = Visibility.Collapsed;
                }
            }
            if (e.NewValue == null)
            {
                return;
            }
            string newName = (string)e.NewValue;
            //如果不包含页面,说明页面没有打开,打开页面
            NameAndFrame newui = GetChildren(newName, pages);

            if (newui == null)
            {
                PageResourceContentLoader load = new PageResourceContentLoader();
                load.BeginLoad(new Uri(e.NewValue + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
                {
                    LoadResult ui         = load.EndLoad(r);
                    FrameworkElement page = (FrameworkElement)ui.LoadedContent;
                    c.Children.Add(page);
                    //添加到页面缓存中
                    NameAndFrame newpage = new NameAndFrame(newName, page);
                    pages.Add(newpage);
                }), 1);
            }
            else
            {
                //修改页面为可见
                newui.frame.Visibility = Visibility.Visible;
                //将新的放到栈顶
                pages.Remove(newui);
                pages.Add(newui);
            }
        }
示例#3
0
 private static void OnPageNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
 {
     Panel c = (Panel)d;
     //获取页面缓存
     List<NameAndFrame> pages = GetPanelPages(c);
     //旧页面变为不可见
     if (e.OldValue != null)
     {
         NameAndFrame oldNaf = GetChildren((string)e.OldValue, pages);
         if (oldNaf != null)
         {
             oldNaf.frame.Visibility = Visibility.Collapsed;
         }
     }
     if (e.NewValue == null)
     {
         return;
     }
     string newName = (string)e.NewValue;
     //如果不包含页面,说明页面没有打开,打开页面
     NameAndFrame newui = GetChildren(newName, pages);
     if (newui == null)
     {
         PageResourceContentLoader load = new PageResourceContentLoader();
         load.BeginLoad(new Uri(e.NewValue + ".xaml", UriKind.Relative), null, new AsyncCallback(r =>
         {
             LoadResult ui = load.EndLoad(r);
             FrameworkElement page = (FrameworkElement)ui.LoadedContent; 
             c.Children.Add(page);
             //添加到页面缓存中
             NameAndFrame newpage = new NameAndFrame(newName, page);
             pages.Add(newpage);
         }), 1);
     }
     else
     {
         //修改页面为可见
         newui.frame.Visibility = Visibility.Visible;
         //将新的放到栈顶
         pages.Remove(newui);
         pages.Add(newui);
     }
 }