文档章节

WPF和WinRT中的导航问题

NoMasp
 NoMasp
发布于 2015/09/08 21:46
字数 826
阅读 31
收藏 0

一、Frame、Page框架的相关介绍

1、Frame类:


继承层次结构

System.Object
  
System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ContentControl
                System.Windows.Controls.Frame

命名空间:System.Windows.Controls

程序集:PresentationFramework(在PresentationFramework.dll中)


Frame是能够定位到并显示内容的内容控件。Frame可以在其他内容中承载,与其他控件和组件。


Frame控件导航到 HTML内容时,内部Frame控件实例化本机 webbrowserActivex控件。WPF通过对函数控件启用安全功能在浏览器 Activex控件。应用于的功能控制对 XBAP和独立应用程序不同。某些应用程序应通过附加功能控制防止恶意内容运行。有关更多信息,请参见中的浏览器控件和功能控制在安全性(WPF)的和WebBrowserControl Overviews and Tutorials部分。 


内容可以导航到通过设置与URISource属性所需内容的。另外,可以使用Navigate方法的一下重载之一,内容可以导航到:Navigate(Uri),Navigate(Uri,Object)


如果内容导航到由URI时,Frame返回包含内容的对象。或者,内容可以导航到使用接受一个对象的Navigate方法重载:Navigate(Object),Navigate(Object,Object)


导航的生存期可以通过以下活动来跟踪:Navigating,Navigated,NavigationProgress,NavigationFailed,NavigationStopped,LoadCompleted,FramentNavigation


不是导航发生的所有事件都引发;引发事件集的方式取决于发生的类型的导航(内容或内容片段),这个导航完成(取消,停止或失败)。




2、Page


继承层次结构


System.Object
  
System.Web.UI.Control
    System.Web.UI.TemplateControl
      System.Web.UI.Page
        
System.Web.UI.DataVisualization.Charting.ChartHttpHandler
        System.Web.UI.MobileControls.MobilePage

命名空间:  System.Web.UI




二、 WPF、WP8 Silverlight 中的导航实现

1、在WPF中的导航:

 

windowwindow:

Window window1=new Window();

window1.Show();

 

windowpage:

Navigation Windowwindow1=new NavigationWindow();

window1.Source=newUri(“Page1.xaml“UriKind.Relative);

window1.Show();

 

pagepage:

NavigationService.GetNavigationService(this).Navigate(newUri(“Page2.xaml”,UriKind.Relative));

 

 

2、在Silverlight(包括WP8开发的时候选择银光框架时)中的导航:         

 (sliver 的意思是切开,切片) (silver才是银色)


this.NavigationService.Navigate(newUri(“/Page1.xaml”,UriKind.Relative);       

WPF中反斜杠是可有可无的,但是WP8中必须要的。

 

三、浅谈WPF、Silverlight和WinRT 


WPF(WPF4)中,导航主要是NavigationService类型,FramePageNavigationWindow类型都有NavigationService属性,同时Frame类型还有一些方法比如Navigate就是直接调用其背后的NavigationService的相应方法。

 

Frame继承自ContentControl,Page继承自FrameworkElement

 

Navigate方法可以传入UriObject参数,同时支持第二个Object代表额外数据。然后再Frame.Navigated事件中,通过NavigationEventArgsExtraData属性来获取额外的数据。但是WPF中的导航数据传递对于开发者来说很头疼。 

 

winRT中,没有了NavigationServiceNavigationCacheMode等在Silverlight中都有的。同时Page还引入了一些新的元素,比如winRT中特有的AppBar。最后winRT中的Page同时引用Frame对象,这个可以说是NavigationService的代替吧,因为如果PageFrame都不引用,那么Page本身便不具备任何主动导航功能了。


WP8中使用银光貌似只是权宜之计?银光也逐渐被微软放弃,随着应用商店的合并,winRT框架也更能够在多种设备中游刃有余。

版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp

本文转载自:http://blog.csdn.net/nomasp/article/details/43602431

NoMasp
粉丝 7
博文 334
码字总数 0
作品 0
镇江
程序员
私信 提问
加载中

评论(0)

WPF老矣,尚能饭否——且说说WPF今生未来(下):安心

在前面的上、中篇中,我们已经可以看到园子里朋友的点评“后山见! WPF就比winform好! 激情对决”。看到大家热情洋溢的点评,做技术的我也很受感动。老实说,如何在本文收笔--WPF系列文章,...

葡萄城控件技术团队
2014/12/16
2K
4
“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心

近日微软公布了最新的WPF路线图,一片热议;对于老牌控件提供商葡萄城来说,这是WPF系列控件一个重要的机遇,因此,Spread Studio for WPF产品做了一次重要更新,并随着Spread Studio 8.0发布...

葡萄城控件技术团队
2014/12/03
3K
5
WPF老矣,尚能饭否——且说说WPF今生未来(中):策略

本文接上文《WPF老矣,尚能饭否——且说说WPF今生未来(上):担心》继续。 “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只不过API...

葡萄城控件技术团队
2014/12/09
2K
3
Essential Studio Enterprise Edition 2015 v3正式发布[附下

使用Essential Studio企业版,开发者可以创建丰富的应用程序,并轻松地集成商业智能分析和报告解决方案。Essential Studio企业版是世界级的软件组件,它使得开发者能在最苛刻的环境下开发出高...

Miss_Hello_World
2015/11/02
163
0
微软对开发者说:Metro才是你们的未来

对于参加微软Build大会的开发者来说,有一个好消息和一个坏消息。好消息是Silverlight和.Net不会寿终正寝,坏消息就是他们主要只能用来开发传统/桌面应用了,因为Metro应用才是Windows 8的主...

红薯
2011/09/16
3.7K
20

没有更多内容

加载失败,请刷新页面

加载更多

Java BigDecimal 如何去掉末尾多余的 0

Java BigDecimal 如何去掉末尾多余的 0 呢? /** * To StripTrailingZeros */ @Test public void bigDecimalStripTrailingZerosTest() { BigDecimal bi......

honeymoose
今天
43
0
齐齐哈尔哪里可以开发票-中国新闻网

齐齐哈尔哪里可以开发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了该...

8315581
今天
79
0
衡水哪里可以开发票-中国新闻网

衡水哪里可以开发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了该种连...

457192
今天
60
0
张家口哪里可以开发票-中国新闻网

张家口哪里可以开发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了该种...

253878
今天
66
0
黑龙江哪里可以开发票-中国新闻网

黑龙江哪里可以开发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了该种...

富大范
今天
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部