欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

有什么容易方便好用的页面传参方法

更新时间: 2014-01-05 02:38:31 责任编辑: Author_N1

 

有什么简单方便好用的页面传参方法?
我受够了像是web url一样的传递参数的方法了!这又不是web!干嘛搞成这样,还要拼字符串,MS脑袋有问题?我想传递对象不可以吗?看到有人说用PhoneApplicationService.State,PhoneApplicationService.State根本不是用来做这种事情的,而且还会有遗留问题,比如没有清空然后又处于睡眠状态,结果就是浪费资源。
就没有一个像android那样简单方便的Bundle ?Intent.PutExtras多爽啊!

还有另外一个问题,像论坛那样我有一个帖子列表,我希望不管是点击标题,还是图片,还是帖子的内容摘要,只要是这个帖子的某个区域,都能进入到这个帖子的详细页面,请问是用HyperlinkButton包覆整个内容吗?
--参考方法--
1,那你可以用全局对象。放在App类里。
2,你可以在列表的模板上,比如是一个grid上,加一个tap事件。
--参考方法--
1,我觉得这样挺好的,使得每个页面都保持自己的独立的状态,嫌传递字符窜麻烦,你就封装一下,比如我的做法就是

private const String NavigatedToUrl = "/Page1.xaml?id={0}";
        public static Boolean NavigatedTo(String id)
        {
            if (String.IsNullOrEmpty(id))
            {
                return false;
            }
            //
            return (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(
                new Uri(String.Format(NavigatedToUrl, id), UriKind.Relative));
        }
        public Page1()
        {
            InitializeComponent();
        }
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            //解析id
        }

比如说Page1页面是一个详情页,那么它不应该依赖调用方传递过来一个完整的详情对象,而只是一个详情Id就足够了,不至于页面之间过于紧密。通过字符串传递这种方式就可以有效的给弱化耦合关系。

其他页面导航到此页就 Page1.NavigatedTo("123")就可以了,上面代码还有一些公共的东西可以提取出来,写一个PageBase(继承子PhoneApplicationPage)基类来做。

这一点就是编程里面很重要的一个原则,职责分离(“自己的事情自己负责”),Page1负责传参、解析内部的东西,只公开以一个入口,就是静态的public static Boolean NavigatedTo(String id), 这样外部调用方就不用在乎你的参数叫id还是叫id1还是id2了,因为这些东西本来就应该是Page1负责的,就这样代码就清晰多了。

2,最外层的控件注册事件就可以了。


--参考方法--
参照我的这篇文章
http://blog.csdn.net/coaxhappy/article/details/9419443

--参考方法--
自己封装一个page类,使用PhoneApplicationService.State,使用完后及时删除State,一般短字符串用url,
还有啥抱怨的,另外state最好不要传递有依赖属性的对象,没法序列号,一旦挂起app,就崩溃,这个要自己注意。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:38:31
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12489/
本文WWW.DOC100.NET DOC100.NET版权所有。