Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回到使用C在wpf xaml中打开的第一个帧#_C#_Wpf_Xaml_Frame_Back - Fatal编程技术网

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

C# 返回到使用C在wpf xaml中打开的第一个帧#,c#,wpf,xaml,frame,back,C#,Wpf,Xaml,Frame,Back,我正在创建一个WPF应用程序,它在几个上部帧中运行,每个打开的帧显示不同的数据,并通过id重新加载 如果我想返回一帧,我可以使用: this.NavigationService.GoBack(); 但是,问题是,如果我想回到第一帧,而不必向我按顺序打开的每个人收费,你可以吗? 类型a方法: this.NavigationService.GoFirstFrameOpen() 有类似的功能吗?如果没有,可能的解决方案是什么?使用属性。 它返回一个IEnumerable,您可以使用该IEnumera

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

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

this.NavigationService.GoBack();
但是,问题是,如果我想回到第一帧,而不必向我按顺序打开的每个人收费,你可以吗? 类型a方法:

this.NavigationService.GoFirstFrameOpen()

有类似的功能吗?如果没有,可能的解决方案是什么?

使用属性。 它返回一个IEnumerable,您可以使用该IEnumerable枚举帧的反向导航历史记录中的条目

您可以通过遍历VisualTree获得包含的帧

样本:

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);
    }
}
附加方法如果您是从页面内导航,则

  • 你可以让你的
    页面
    类有一个参数化的构造函数来接收框架对象

  • 在到达第一个页面条目之前,您可以使用while循环来返回

  • 使用
    页面功能
    。是一个可以返回值的页面


  • 您希望历史记录反映您返回的内容,还是您导航到了第一页?也就是说,在返回到第一页之后,是否要继续前进以进入第二页?如果是这样的话,我想你得把它们都翻一遍。如果没有,你可以保留对第一个页面的引用,然后导航到该页面。我不会回去做所有的框架,我会回到用户打开的第一个页面。可能吗?@Mr.Developer您的问题解决了吗?如果是,请标记正确答案,如果不是,请告诉问题。问题是我在帧内,我无法用backback方法回忆起这一点