通过Usercontrol对象进行页面导航的UWP访问框架?
我目前正在开发一个UWP应用程序,它涉及Map中的几个Usercontrol对象( 使用Windows.UI.Xaml.Navigation )。
使用这些Usercontrol对象我有时需要用户能够按下对象中的按钮并被带到新页面,唯一的问题是我似乎无法访问页面的Frame以便能够使用
Frame.Navigate(typeof([page]));
方法。 我怎么会这样做和/或有其他选择吗? 我大部分时间都被困在这一天!
在此先感谢您提供的任何帮助!
我们可以让页面自行导航。 只需在自定义用户控件中定义一个事件,然后在其父级(页面)中侦听该事件。
以下面的例子为例:
- 创建一个自定义用户控件并在其上放置一个按钮以进行测试。
- 在测试按钮的单击事件中,引发事件以导航父页面。
- 在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));