silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SilverlightNavigation(多页面导…大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

主要是说一下Page控件以及使用模版. 在之前的例子中使用的是UserControl来做为页面,但通常的话我们是使用Page控件的,或者自己继承Page类来代替UserControl。因为Page提供了更方便的导航功能以及状态管理。其实,Page类是继承自UserControl的,然后添加了一些成员,一些可重写的方法和四个属性:title、Navigationservice、NavigationC

主要是说一下Page控件以及使用模版.
在之前的例子中使用的是UserControl来做为页面,但通常的话我们是使用Page控件的,或者自己继承Page类来代替UserControl。因为Page提供了更方便的导航功能以及状态管理。其实,Page类是继承自UserControl的,然后添加了一些成员,一些可重写的方法和四个属性titleNavigationserviceNavigationContextNavigationCacheMode。其中Titel属性比较简单,不做多说,其他属性在后面都会有说到。
使用Page控件很简单,和向项目中添加UserControl一样。
1.Page
控件属性介绍
一个Page控件内都会有一个Navigationservice属性,这个属性就相当于访问Silverlight导航系统的入口,因为它提供了与Frame对象一样的方法属性Navigate()GoBACk()GoForWARD()属性CanGoBACkCanGoForWARDCurrentsource等)。意思就是说在Page里面就可以进行导航了..

  1. this.Navigationservice.Navigate(new Uri("/Page2.xaml",UriKind.RelativE));


Page
类还含有一个NavigationContext属性用来访问NavigationContext对象。使用这个属性可以获取当前的URL,使用QueryString可以获取URL中的参数(方法的赋值和使用在一块,与全局变量比不会太凌乱)。也就是说你可以在跳转页面的时候使用地址栏参数传值。如下:

  1. String uriText = String.Format("/Product.xaml?id={0}&type={1}",productID,productTypE);
  2. @H_646_94@mainFrame.Navigate(new Uri(uriText),UriKind.RelativE);


这样你就可以传两个值到目标页面..
然后在Priduct.xaml页面你就可以获取到值了:

  1. int productID,type;
  2.         if (this.NavigationContext.QueryString.ContainsKey("productID"))
  3.             productID = Int32.Parse(this.NavigationContext.QueryString["productID"]);
  4.         if (this.NavigationContext.QueryString.ContainsKey("type"))
  5.             type = Int32.Parse(this.NavigationContext.QueryString["type"]);


   
当让你还可以使用其他方式传值,比如在存储在Appliaction(或者在项目命名空间下创建一个类(继承App),作用是一样的,这样程序比较清晰)对象中,或者是使用独立存储都可以实现,因为使用URL参数很容易就会被篡改..

保存页面状态
通常,用户第一次进入页面或者是使用前进后退按钮切换页面,都会重新创建一个对象,当用户离开,对象就会被释放。这种情况下,如果用户输入的有信息,再回到页面就会编程认值,页面的其他成员也会初始化成认值。而如果可以存储页面状态的话就不会出现这种情况了。
Silverlight
允许使用Page.NavigationCacheMode属性来设置存储策略,这个属性认值是Disabled所以不会认不会存储页面。把属性设置为required那么页面就会保存到内存中。当用户离开页面再返回的时候就可以看到自己修改内容依然存在,不过再次回到页面不会触发页面的构造方法,所以如果你在构造函数里写的有逻辑就需要注意了。不过会触发页面Loaded事件。
NavigationCacheMode
的另外一个值是Enabled,如果设置成这个值,那么页面就好与Frame.CacheSize(保存页面数量属性关联,加入CacheSize属性设置为10,当第11页面存储进来的话第一个页面就会被释放。而NavigationCacheMode属性设置为required属性页面就不会被计算在CacheSize中。这个可以根据自己的需要进行选择。
Page
控件的方法
    Page
类包含了几个方法使你能更加灵活的管理导航。

@H_301_321@
  • OnNavigatedTo():页面不再是框架中的活动页面调用
  • OnNavigaTingFrom():页面成为框架中的活动页面调用
  • OnNavigatedFrom():页面即将不再是框架中的活动页面调用

     转载别人的东西,感觉很有用,学了不少东西,也加了些自己的东西。以防遗忘。

    @H_419_351@

    大佬总结

    以上是大佬教程为你收集整理的SilverlightNavigation(多页面导…全部内容,希望文章能够帮你解决SilverlightNavigation(多页面导…所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。