【问题标题】:UWP navigation from child page frame to main page frame从子页面框架到主页面框架的 UWP 导航
【发布时间】:2017-02-11 06:33:56
【问题描述】:

我正在开发一个 UWP 应用程序,我遇到了后根框架导航的问题,我有主页面,我有框架,我将所有页面导航到这个框架,dashboard.xaml,orders.xaml... .etc,我的 orders.xaml 我有另一个框架......在那个框架中,当我在任何这些页面中点击取消按钮时,我导航 3 个表单(带有取消按钮的 xaml 页面),我需要导航到我的订单页面返回...因此,我在获取主页面框架以将我的 Orders.xaml 导航到该页面时遇到问题,请帮助我。在此先感谢

【问题讨论】:

  • 你应该重新考虑你的设计。三级导航对于用户友好性来说太复杂了。尝试换掉用户控件。

标签: xaml navigation uwp frame


【解决方案1】:

有多种方法可以实现您想要的。例如,您可以在 Mainpage 中定义一个公共静态属性,以公开 Frame

public sealed partial class MainPage : Page
{
    public static Frame MainPageFrame;

    public MainPage()
    {
        this.InitializeComponent();
        //Frame1 is the name of the Frame in XAML
        MainPageFrame = Frame1;
    }

    ...
}

然后在订单详情页面,使用该属性进行导航。

MainPage.MainPageFrame?.Navigate(typeof(Orders));

或者您可以利用VisualTreeHelper 并获取父级Frame 即“Frame1”,例如:

//this.Frame gets the Frame holds the order details page (i.e "Frame2") 
FindParent<Frame>(this.Frame)?.Navigate(typeof(Orders));

这里的FindParent方法是一个帮助方法,使用VisualTreeHelper.GetParent方法如下:

public static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
    var parentObject = VisualTreeHelper.GetParent(dependencyObject);

    if (parentObject == null) return null;

    var parent = parentObject as T;
    return parent ?? FindParent<T>(parentObject);
}

【讨论】:

  • 非常感谢 Jay...它正在使用 VIsualTreeHelper 方法工作
【解决方案2】:

应该这样做:

Frame.Navigate(typeof(orders));

【讨论】:

  • 感谢您的回答,但是当我尝试上述操作时,我将订单页面导航到错误的框架(不是主页框架)。 Mainpage--> Frame 1--> Orders.xaml-->createOrder(button)--> click--> xaml page with 4tabs and a Frame2-->对于每个标签,我导航一个页面(表单)来接受订单来自用户的详细信息,每个表单都有取消,单击取消我应该导航到订单页面(即进入 Mainpage.xaml Frame1)
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多