返回到在wpf xaml中用C#打开的第一个框架
问题描述:
我正在创建WPF应用程序,该应用程序在几个较高的框架中进行,并为每个开放框架显示不同的数据,重新加载传递一个ID。返回到在wpf xaml中用C#打开的第一个框架
如果我想回去一帧我可以用这个:
this.NavigationService.GoBack();
但是,问题,如果我想回到第一帧,而无需充电大家我在序列打开,你能够 ? 类型的方法:
this.NavigationService.GoFirstFrameOpen()
有类似的功能?如果不是,一个可能的解决方案?
答
使用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方法,如果你是从页内导航,然后
你可以有你
Page
类有一个参数的构造函数接收帧的对象。您可以使用while循环向后,直到您到达第一个页面。
使用
PageFunction
。 A PageFunction是一个可以返回值的页面。
你想的历史,以反映你回去,或者你导航期待的第一页?也就是说,在你回到第一页之后,你是否想要前往第二页?如果是这样,我认为你必须回过头来看看它们。如果不是的话,你可以保留对第一页的引用,然后导航到该页面。 – juharr
我不会回去做所有的框架,我会回到用户打开的第一个框架。有可能吗? –
@ Mr.Developer你的问题解决了吗?如果是的话,PLZ标记正确的答案,如果没有,请告诉问题。 – AnjumSKhan