返回到使用 C# 在 WPF XAML 中打开的第一帧

本文关键字:一帧 XAML WPF 返回 | 更新日期: 2023-09-27 18:36:47

我正在创建WPF应用程序,该应用程序在几个上部帧中运行,每个打开的帧显示不同的数据,通过id重新加载。

如果我想返回一帧,我可以使用它:

this.NavigationService.GoBack();

但是,问题,如果我想回到第一帧,而不必按顺序向我打开的每个人收费,你可以吗?键入方法:

这。NavigationService.GoFirstFrameOpen ()

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

返回到使用 C# 在 WPF XAML 中打开的第一帧

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

您可以通过遍历可视化树来获取包含的帧。

样本:

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);
    }
}

附加方法,如果您从页面内导航,则

  1. 可以让Page类具有接收 Frame 对象的参数化构造函数。

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

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

WPF 导航