作過.Net開發的都瞭解,當二級窗口操做主窗口的控件時一般用委託的方式。那麼在UWP開發中,經常會遇到MainPage的二級Frame裏面的內容去操做MainPage的導航跳轉,具體看下圖:ide
如何經過點擊窗口把MainPage.Frame跳轉到一個新的Page函數
1,MainPage的Grid測試
<Grid> <Grid.RowDefinitions> <RowDefinition Height="100"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock Foreground="Red" FontSize="30" Text="我是MainPage" HorizontalAlignment="Center"/> <Border Margin="2" Grid.Row="2" BorderBrush="Black" BorderThickness="1"> <Frame Grid.Row="1" x:Name="contentFrm"> <local:內部頁面1/> </Frame> </Border> </Grid>
2,內部頁面1的Gridthis
<Grid> <ScrollViewer> <StackPanel> <Border x:Name="widthEg" Width="120"/> <GridView ItemClick="GridView_ItemClick" IsItemClickEnabled="True" ItemTemplate="{StaticResource tplt}" ItemsSource="fghjglkhlhklhjl"/> </StackPanel> </ScrollViewer> </Grid>
3,NewMainPage的Gridspa
<Grid Background="Blue"> <TextBlock Text="我佔領MainFrame了!" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid>
目前要求作的就是要實現點擊內部頁面1的GridViewItem,將MainPage.Frame導航到NewMainPagecode
1,內部頁面1.csblog
public sealed partial class 內部頁面1 : Page { public 內部頁面1() { this.InitializeComponent(); this.SizeChanged += 內部頁面1_SizeChanged; } private void GridView_ItemClick(object sender, ItemClickEventArgs e) { MianNavigateToEvent(typeof(NewMain)); } public delegate void NavigateHandel(Type page); public static event NavigateHandel MianNavigateToEvent; }
在內部頁面1中定義委託和事件,並在ItemClick中執行跳轉事件事件
2,MainPage.cs開發
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { 內部頁面1.MianNavigateToEvent += 內部頁面1_MianNavigateToEvent; } private void 內部頁面1_MianNavigateToEvent(Type page) { this.Frame.Navigate(page); } }
在MainPage的加載事件中註冊委託要執行的方法it
那麼這個方法就是將MainPage的Frame導航到目標頁面
也就是函數聲明在操做頁面,函數體在MainPage中(不知道這樣描述對不對)