通过Usercontrol对象进行页面导航的UWP访问框架?

我目前正在开发一个UWP应用程序,它涉及Map中的几个Usercontrol对象( 使用Windows.UI.Xaml.Navigation )。

使用这些Usercontrol对象我有时需要用户能够按下对象中的按钮并被带到新页面,唯一的问题是我似乎无法访问页面的Frame以便能够使用

Frame.Navigate(typeof([page])); 

方法。 我怎么会这样做和/或有其他选择吗? 我大部分时间都被困在这一天!

在此先感谢您提供的任何帮助!

我们可以让页面自行导航。 只需在自定义用户控件中定义一个事件,然后在其父级(页面)中侦听该事件。

以下面的例子为例:

  1. 创建一个自定义用户控件并在其上放置一个按钮以进行测试。
  2. 在测试按钮的单击事件中,引发事件以导航父页面。
  3. 在Parent页面中,监听UserControl的事件并调用Frame.Navigate。

MyControl的Xaml:

      

MyControl的CodeBehind:

 public sealed partial class MyControl : UserControl { public delegate void MyEventHandler(object source, EventArgs e); public event MyEventHandler OnNavigateParentReady; public MyControl() { this.InitializeComponent(); } private void testbtn_Click(object sender, RoutedEventArgs e) { OnNavigateParentReady(this, null); } } 

将MainPage导航到SecondPage:

  public MainPage() { this.InitializeComponent(); myControl.OnNavigateParentReady += myControl_OnNavigateParentReady; } private void MyControl_OnNavigateParentReady(object source, EventArgs e) { Frame.Navigate(typeof(SecondPage)); } 

您可以从当前窗口的内容中获取对框架的引用。 在您的用户控件的代码后面尝试:

 Frame navigationFrame = Window.Current.Content as Frame; navigationFrame.Navigate(typeof([page])); 

或者,使用Cast =>

((帧)Window.Current.Content).Navigate(typeof运算(Views.SecondPage));