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页面并返回的过程中,需要传递参数并更新相关数据的功能。

  • 相关阅读:
    20199131-2020-3-18 《网络攻防实践》第3周作业
    20199131-第2次作业-网络攻防实践
    20199131-第1次作业-网络攻防概述
    20199131《网络攻防实践》假期作业
    学习《深入理解计算机系统(第三版)》第二章总结
    学习《构建之法(第三版)》第一章总结
    关于宏的使用和Vim及其插件安装的学习总结
    细读《从问题到程序(第二版)》第一章学习总结
    细读《深入理解计算机系统(第三版)》第一章学习总结
    可信计算
  • 原文地址:https://www.cnblogs.com/songtzu/p/2666370.html
Copyright © 2011-2022 走看看