zoukankan      html  css  js  c++  java
  • 关于用户控件的页面跳转问题 from http://blog.csdn.net/moxiaomomo/article/details/7439027

    因为用户控件页面不支持

    [csharp] view plaincopy
    1. NavigationService.Navigate(new Uri("/page2.xaml", UriKind.Relative))  

    所以从UserControl页面导航到PhonePage页面,需要用到RootVisual根视图容器里的方法来实现页面跳转:

    [csharp] view plaincopy
    1. private void OnControl1ButtonClick(object sender, RoutedEventArgs e)  
    2. {  
    3.     PhoneApplicationFrame rootFrame = Application.Current.RootVisual as PhoneApplicationFrame;  
    4.   
    5.     Uri almanacPageUri = new Uri("/page2.xaml", UriKind.Relative);  
    6.     rootFrame.Navigate(almanacPageUri);  
    7. }  


    同时如果UCpage1想接收从page2返回的数据时(如下图),可以采取这样的方法实现参数的传递:

    在UCPage1中:

    [csharp] view plaincopy
    1. private void OnControl1ButtonClick(object sender, RoutedEventArgs e)  
    2. {  
    3.     PhoneApplicationFrame rootFrame = Application.Current.RootVisual as PhoneApplicationFrame;  
    4.     rootFrame.Navigated -= OnNavigated;  
    5.     rootFrame.Navigated += OnNavigated;  
    6.     Uri pageUri = new Uri("/page2.xaml", UriKind.Relative);  
    7.     rootFrame.Navigate(pageUri);  
    8. }  
    9.   
    10. private void OnNavigated(object sender, NavigationEventArgs e)  
    11. {  
    12.     Page2 page2 = e.Content as Page2;  
    13.     if (null != page2)  
    14.     {  
    15.         // SelectionChanged是在Page2中定义的委托事件,并在UCPage1中注册,  
    16.         // 这样当SelectionChanged在page2中被触发时,page1便可以截获这个事件并进行处理  
    17.         page2.SelectionChanged += OnSelectionChanged;  
    18.     }  
    19. }  
    20.   
    21. /// <summary>  
    22. /// 处理关于SelectionChanged事件的方法  
    23. /// </summary>  
    24. /// <param name="sender"></param>  
    25. /// <param name="e">SelectionChangedEventArgs可以是自定义的参数类型,里面包含了要传递的信息</param>  
    26. private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)  
    27. {  
    28.     m_AlmanacSelected = e.SelectedAlmanac;  
    29.     //TODO:这里实现具体的处理逻辑  
    30. }  
    
    

    在Page2中:

    [csharp] view plaincopy
    1. // 定义委托事件SelectionChanged,参数类型为SelectionChangedEventArgs(该参数可以自定义)  
    2. public event EventHandler<SelectionChangedEventArgs> SelectionChanged;  
    3.   
    4. /// <summary>  
    5. /// 完成并返回  
    6. /// </summary>  
    7. /// <param name="sender"></param>  
    8. /// <param name="args"></param>  
    9. private void OnDoneButtonClick(object sender, EventArgs args)  
    10. {  
    11.     SelectionChanged(sender, new SelectionChangedEventArgs(m_SelectedItem));  
    12.   
    13.     NavigationService.GoBack();  
    14. }  


    这样便实现了从用户控件页面跳转到phonepage页面并返回的过程中,需要传递参数并更新相关数据的功能。

  • 相关阅读:
    树状数组|求逆序数
    Mapreduce之分区与自定义计数器
    yb课堂 前端项目目录结构创建和讲解 《三十三》
    yb课堂 VueCli 4.3搭建yb课堂前端项目架构 《三十二》
    yb课堂 ECMAScript 6常见语法快速入门 《三十一》
    yb课堂 前端项目技术组件概述 《三十》
    yb课堂 新版VueCli 4.3创建vue项目,Vue基础语法入门 《二十九》
    yb课堂 新版Vue+脚手架Vue-Cli 4.3安装 《二十七》
    yb课堂 搭建node环境和npm安装 《二十六》
    yb课堂 VSCODE编译器和开发环境搭建 《二十五》
  • 原文地址:https://www.cnblogs.com/songtzu/p/2666370.html
Copyright © 2011-2022 走看看