sliverlight navigation 的问题

公司最近在做一个项目, 由于是一家搜索引擎公司,为客户提供商业数据. DataGrid需要支持筛选,自定列,自定义列顺序,goback或前进需要保留客户的所有操作,可以非常方便的refresh data,导出到excel,自己控制显示和关闭进度条。所以自己开发了一个datagrid. 大致是用 datagrid+domaindatasource+datapager + busyIndictor. 这个datagrid做的很成功,马上要发布到产品中。 但在项目中 有下面几个需求

1. CompanySummary 页面,当客户点击Company/Summary的按钮用来显示 GetCompanySumayView()数据,还要显示CompanySearch的数据。

2.当其他地方做了修改能方便的refresh data.

3.支持goback和goforth,并且要记住用户的所有操作和数据

解决3我们把所有客户浏览的页面保存在内存里面, 当客户navigation的时候,我们对照内存里面的页面,如果已经存在,我们把已存在的页面展示给客户。 这样做的好处是简单,坏处是会浪费资源。还好页面不是很多,内存占用的少,这个方法还是蛮可行的。

2使用我们自己开发的datagrid已经解决。

1.的解决比较棘手。(navigation 不支持 自己goback到自己, 如果客户现在是显示search 结果的company summary界面 后退到或点击到显示GetCompanySumayView()数据 的页面时不会成功的)

companysummary

{

    companysummary(){//1}

    companysummary(string query, Parameter[] parameters){//2}

     NavigationTo(..){//3}

}

有时中方法

1. //1,//2中load data.   冲menu click过来的调用 companysummary(), 从search过来的调用 companysummary(string query, Parameter[] parameters), 这样做有一个缺点是 每次浏览这个页面的时候 会调用两次ria service call.

2.使用在NavigationTo中加载数据System.Uri(...).  System.Uri()调用 CompanySummary()生成 p1,这和我们内存中catech的和要显示的company summary p2 是两个不同实例。  系统只会调用p1.NavigationTo, 所以 p2根本就没有加载数据,p2.isbusy =true.  使用p2的原因是a.支持goback ,goforth,  b.从menu click 到 company summary 而不是search 

3.直接使用 mainpage.contentframe.content=summarypage. 是可以实现只 调用construct一次,但有一个问题,ie记不住这个页面,goback,goforth 不到这个页面

4.CompanySummary(queryName,parameters) + System.Uri(..)

原文地址:https://www.cnblogs.com/mjgb/p/1885734.html