-前言

  做过.Net开发的都了解,当二级窗口操作主窗口的控件时通常用委托的方式。那么在UWP开发中,常常会遇到MainPage的二级Frame里面的内容去操作MainPage的导航跳转,具体看下图:

如何通过点击窗口把MainPage.Frame跳转到一个新的Page

-举例Demo

这里有三个页面

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的Grid

<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的Grid

<Grid Background="Blue">
        <TextBlock Text="我占领MainFrame了!" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>

目前要求做的就是要实现点击内部页面1的GridViewItem,将MainPage.Frame导航到NewMainPage

-后台代码

1,内部页面1.cs

 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的加载事件中注册委托要执行的方法

那么这个方法就是将MainPage的Frame导航到目标页面

也就是函数声明在操作页面,函数体在MainPage中(不知道这样描述对不对)

-测试效果

UWP开发---通过委托跨页面导航的更多相关文章

  1. UWP开发笔记——嵌套式页面的实现

    绪论 UWP开发中,Page是最常用的Control之一,通常情况下,在开发的application中,每一个页面就是一个Page.有时候,为了开发整合度更高,UI表现更为一致的UI,开发者需要把UI ...

  2. mui框架开发aop的跨页面传值

    mui开发跨平台app,其实不乏会涉及到跨页面传值,今天给大家简单介绍一种常用也是简单的传值方法 咱在这里设置一个场景,就是两个页面进入到同一页面展示不同的元素,此时需要在这两个页面各自设置一个区别的 ...

  3. 使用jQuery开发iOS风格的页面导航菜单

    在线演示1 本地下载     申请达人,去除赞助商链接 iOS风格的操作系统和导航方式现在越来越流行,在今天的jQuery教程中,我们将介绍如何生成一个iphone风格的菜单导航. HTML代码 我们 ...

  4. WordPress主题开发:输出指定页面导航

    实例: <ul> <li class="widget widget_nav_menu"> <?php if(is_page(array(12,14,1 ...

  5. Win10 UWP 开发系列:使用SplitView实现汉堡菜单及页面内导航

    在Win10之前,WP平台的App主要有枢轴和全景两种导航模式,我个人更喜欢Pivot即枢轴模式,可以左右切换,非常方便.全景视图因为对设计要求比较高,自己总是做不出好的效果.对于一般的新闻阅读类Ap ...

  6. 小程序开发-页面导航栏navigation-bar组件

    导航栏navigation-bar 页面导航条配置节点,用于指定导航栏的一些属性.只能是 page-meta 组件内的第一个节点,需要配合它一同使用. 通过这个节点可以获得类似于调用 wx.setNa ...

  7. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  8. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  9. Win10/UWP开发—凭据保险箱PasswordVault

    PasswordVault用户凭据保险箱其实并不算是Win10的新功能,早在Windows 8.0时代就已经存在了,本文仅仅是介绍在UWP应用中如何使用凭据保险箱进行安全存储和检索用户凭据. 那么什么 ...

随机推荐

  1. OOP的几个不常用的方法

    from OOP_多态 import cat c = cat("cat") print(c.__doc__) print(cat.__doc__) # # 打印类的描述信息,也就是 ...

  2. python之socket运用之执行命令

    服务端的代码 import socket import subprocess HOST = "127.0.0.1" PORT = 5001 ip_bind = (HOST,PORT ...

  3. pthread_exit pthread_join

    int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthrea ...

  4. url传递数据

    一.post传递数据 $ci = curl_init($url); curl_setopt($ci, CURLOPT_HEADER, 0); curl_setopt($ci, CURLOPT_RETU ...

  5. VMware下的Linux系统中Windows的共享目录,不支持创建软连接

    [问题]  在编译VMware下的Linux系统对从Windows中共享过来的文件,进行编译的时候,遇到:  ln: creating symbolic link XXXXXX : Operation ...

  6. [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件

    问题1:怎样通过批处理调用java代码? 问题2:怎样通过java从CSV文件获取到用户名和密码存入变量? 问题3:怎样将获取到的用户名和密码组合成字符串,写入外部批处理文件? 问题4:怎样在批处理文 ...

  7. c++日志练习

    使用ostream流创建写入log日志文件 使用宏 配置文件大小和间隔时间  当创建文件时间间隔或文件大小大于指定数字 则创建新文件 文件名由时间自动命名 /********************* ...

  8. 20155233 2016-2017-2 《Java程序设计》第8周学习总结

    20155233 2016-2017-2 <Java程序设计>第8周学习总结 学习目标 了解NIO 会使用Channel.Buffer与NIO2 会使用日志API.国际化 会使用正则表达式 ...

  9. 2018.09.17 atcoder Tak and Hotels(贪心+分块)

    传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...

  10. UVa 11491 Erasing and Winning (贪心,单调队列或暴力)

    题意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变). 析:拿掉d个数字,还剩下n-d个数字.相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口 ...