首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

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

2013-10-23 
有什么简单方便好用的页面传参方法?我受够了像是web url一样的传递参数的方法了!这又不是web!干嘛搞成这样

有什么简单方便好用的页面传参方法?
我受够了像是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,就崩溃,这个要自己注意。

热点排行