返回到在wpf xaml中用C#打开的第一个框架

返回到在wpf xaml中用C#打开的第一个框架

问题描述:

我正在创建WPF应用程序,该应用程序在几个较高的框架中进行,并为每个开放框架显示不同的数据,重新加载传递一个ID。返回到在wpf xaml中用C#打开的第一个框架

如果我想回去一帧我可以用这个:

this.NavigationService.GoBack(); 

但是,问题,如果我想回到第一帧,而无需充电大家我在序列打开,你能够 ? 类型的方法:

this.NavigationService.GoFirstFrameOpen()

有类似的功能?如果不是,一个可能的解决方案?

+0

你想的历史,以反映你回去,或者你导航期待的第一页?也就是说,在你回到第一页之后,你是否想要前往第二页?如果是这样,我认为你必须回过头来看看它们。如果不是的话,你可以保留对第一页的引用,然后导航到该页面。 – juharr

+0

我不会回去做所有的框架,我会回到用户打开的第一个框架。有可能吗? –

+0

@ Mr.Developer你的问题解决了吗?如果是的话,PLZ标记正确的答案,如果没有,请告诉问题。 – AnjumSKhan

使用Frame.BackStack属性。 它返回一个IEnumerable,用于枚举Frame的后退导航历史记录中的条目。

您可以通过遍历VisualTree获取包含的Frame。

样品:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var leaf = (DependencyObject)sender; 
    while(leaf.GetType() != typeof(Frame)) 
    { 
     leaf = VisualTreeHelper.GetParent(leaf); 
    } 

    Frame f = leaf as Frame; 
    if (f != null) 
    { 
     JournalEntry firstItem = null; 
     foreach (JournalEntry item in f.BackStack) 
     { 
      firstItem = item; 
      break; 
     } 

     this.NavigationService.Navigate(firstItem.Source); 
    } 
} 

Addional方法,如果你是从页内导航,然后

  1. 你可以有你Page类有一个参数的构造函数接收帧的对象。

  2. 您可以使用while循环向后,直到您到达第一个页面。

  3. 使用PageFunction。 A PageFunction是一个可以返回值的页面。

WPF Navigation

+0

问题是,我在框架内,我不记得这与BackStack方法 –

+0

@ Mr.Developer PLZ看到我的更新回答 – AnjumSKhan

+0

这是工作!谢谢 –