We can let the page navigate. Just define the event in your user control and listen to the event in its parent (page).
As an example, take the following:
- Create a custom control and place a button on it for testing.
- In the test window, click an event, raise an event to go to the parent page.
- On the parent page, listen for the UserControl event and call Frame.Navigate.
MyControl Xaml:
<UserControl x:Class="App6.MyControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App6" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid> <Button x:Name="testbtn" Margin="168,134,0,134" Click="testbtn_Click">test</Button> </Grid> </UserControl>
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); } }
Navigate MainPage to SecondPage:
public MainPage() { this.InitializeComponent(); myControl.OnNavigateParentReady += myControl_OnNavigateParentReady; } private void MyControl_OnNavigateParentReady(object source, EventArgs e) { Frame.Navigate(typeof(SecondPage)); }
source share