Windows Phone7 开发学习—Image用作Button, 页面导航的实现【转】

 需求是这样的:一个自定义控件有一个StackPanel和里面若干个Image构成,欲实现当用户点击Image时跳转到指定页面,例如QQ For Windwos Phone里的“应用”页面一样:

     原理相对简单,只需为Image控件添加一个MouseLeftButtionDown事件即可,然后在事件中添加像这样的导航代码:

   NavigationService.Navigate(new Uri("/SubPage.xaml", UriKind.Relative));

 

      遗憾的是,在此this的基类是UserControl,而不是PhoneApplicationPage,所以,我们不能直接使用NaviagtionService,而是需要做一些处理,这是一种方法

var frame = App.Current.RootVisual as PhoneApplicationFrame;
frame.Navigate(new Uri("/TargetPage.xaml", UriKind.Relative));

 

 

      或者使用这种方法获取此用户控件所在的Page,然后获取到NavigationService。

   System.Windows.Navigation.NavigationService service = 
   ((Application.Current as App).RootFrame.Content as Page).NavigationService;
   service.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));  

 

 

      需要注意的是,页面的Uri必须存在,否则会引发“A first chance exception of type ‘System.InvalidOperationException’ occurred in Microsoft.Phone.dll”异常。

      至此,任务完成,当然,也可能存在其它更好的办法。

 

 

原文链接:http://www.hamguy.info/csharp/windows-phone7-%E5%BC%80%E5%8F%91%E5%AD%A6%E4%B9%A0%EF%BC%8810%EF%BC%89-%E8%87%AA%E5%B7%B1%E5%B7%B2usercontrol%E9%A1%B5%E9%9D%A2%E5%AF%BC%E8%88%AA%E7%9A%84%E5%AE%9E%E7%8E%B0

posted @ 2012-05-24 11:23  AGA2012  阅读(227)  评论(0编辑  收藏  举报