//获得容器最上面页面的名称 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); }
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); } }
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); } }