博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于用户控件的页面跳转问题 from http://blog.csdn.net/moxiaomomo/article/details/7439027
阅读量:5243 次
发布时间:2019-06-14

本文共 1945 字,大约阅读时间需要 6 分钟。

因为用户控件页面不支持

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

 

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

 

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

 

转载于:https://www.cnblogs.com/songtzu/archive/2012/09/01/2666370.html

你可能感兴趣的文章
android busybox httpd搭建简单web服务器
查看>>
301. Remove Invalid Parentheses
查看>>
回去样式改成scss的
查看>>
[BZOJ1014][JSOI2008]火星人prefix splay+hash+二分
查看>>
[BZOJ1012][JSOI2008]最大数maxnumber 线段树
查看>>
RestEasy与Jsonp(ajax跨域)
查看>>
Linux的CPU相关知识
查看>>
APP性能测试,网易Emmagee工具
查看>>
iOS开发调试技巧总结
查看>>
Ubuntu 18.04
查看>>
Install Emmet &Theme For Sublime Text 3 Without Package control
查看>>
CDN缓存(转载)
查看>>
js常用函数、书写可读性的js、js变量声明...
查看>>
Java面试基础知识(2)
查看>>
遍历数组的好方法
查看>>
javaweb项目打成war包
查看>>
关系代数运算——(软考三)
查看>>
WinForm------自定义YearMonthEdit组件
查看>>
Strut2------源码下载
查看>>
[LeetCode] 152. Maximum Product Subarray Java
查看>>